The Beginning

Thomas J. Kennedy

Contents:

Welcome to CS 350 (Introduction to Software Engineering).

1 Who am I?

I have taught various courses, including:

Most of my free time is spent writing Python 3 code, tweaking my Vim configuration, or learning a new (programming) language. My current language of interest is Rust (at the time of writing).

Sometimes I find time to play a videogame or two. Sometimes I tell jokes. These jokes are not guaranteed to be humorous–unlike my Morris stories.

2 Asking Questions…!

If you have taken a class with me before, you are have heard me emphasize the importance of questions. As we move through the semester, and questions materialize, we have a discussion board, my office hours (which include network conferencing), and email tkennedy@cs.odu.edu.

3 Tools of the Trade

In CS 330 (Object Oriented Programming & Design)… I like to start with a table of tools

Example 1: CS 330 Table of Tools
Tool Assignments Lecture Recordings
SSH
Linux
g++
Makefiles
Vim Hopefully
Git Hopefully
Unit Testing / TDD
Doxygen Maybe
Javadoc Maybe
Rustdoc Maybe
Pydoc Maybe
Tox Maybe
Gradle
CPPLint Maybe
Checkstyle Maybe
Pycodestyle / Pylint Maybe
PlantUML Maybe
SDEdit Maybe

In this course we will:

Let us start by reorganizing the example table.

Tool Type C++ Tool Java Tool Python Tool Rust Tool
Compiler g++ javac N/A rustc
Build Make Gradle N/A Cargo
Configuration CMake Gradle tox Cargo
Testing / TDD Too many too list JUnit unittest & pytest built-in
Documentation Doxygen Javadoc PyDoc Rustdoc
Style Check & Lint CPPLint Checkstyle, PMD, Spotbugs Pycodestyle, Pylint, black, isort cargo check, cargo fix, cargo fmt

You may also end up using:

SSH and Linux are general tools with which you are already familiar… unlike emacs (the existence of which I do not recognize). We all know Vim is the correct choice.

You should have used Git in some capacity… even if it was to access my examples on GitHub.


A few tools will be used heavily for office hours and questions…

 
Tool Assignments Lecture Recordings
Zoom (Office Hours)
Email
Questions

4 Lecture Examples

I have a number of examples available on GitHub

5 Questions…

  1. Do I need to know all the tools listed in Tools of the Trade?

    No. you do not need to know all the tools. However, you must be familiar with SSH and Linux based on previous coursework.

  2. Why do you use Vim?

    The short answer is that… Vim works. I can write code quickly, compile and run code, and switch between languages. Most importantly, I can do everything completely from the keyboard (without the mouse).

  3. Can I use VSCode, or Eclipse, or Vim and the command line?

    Yes. You may use any of the three. However, I strongly encourage you to use VSCode

  4. What is your favorite language?

    It is currently a tie between Python and Rust.

  5. Will you tell us a Morris story?

    Maybe.

  6. Can I ask you about a topic not covered in lecture?

    Yes.

  7. Who is Raymond Hettinger?

    Raymond Hettinger is one of the Python core developers. He is known for his amazing Python talks/lectures.

6 Beginning of the Semester Concerns

You will hear me discuss and reference topics from various courses, including:

Every semester a few students end up terrified that they have missed a required prerequisite course. Before you start second guessing yourself… take a look at the prerequisites section of the syllabus. If a course is not listed as a prerequisite… you are not expected to have completed it.

Why mention other courses?

Computer Science is a broad field. There are many connections between topics and concepts. One of the biggest mistakes anyone can make (especially students and teachers) is to treat a course as existing in a vacuum. Remember two things:

  1. One of our goals is to learn how to see these connections and use them to solidify understanding in this course and other courses.

  2. I enjoy Computer Science (including this course) and have a penchant to get carried away.