The Beginning

Thomas J. Kennedy

Contents:

Welcome to CS 330 (Object Oriented Programming and Design).

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 (usually Minecraft). 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 https://www.cs.odu.edu/~tkennedy (which include network conferencing), and email tkennedy@cs.odu.edu.

3 Object Oriented Programming & Design

The title of this course is Object Oriented Programming & Design. Let us start by discussing S.O.L.I.D. My colleagues and I disagree on when this should be introduced. I believe S.O.L.I.D should be discussed now… at the very beginning of the semester. To do so, we will have to split the word:

S.O.L.I.D = (S.O.) + (L.I.D.)
 

This gives us two sub-acronyms. We will start with S.O. If you do not like my puns… you can put a L.I.D on it.


Why are we starting with S.O.? First… we have all the tools we need to understand it:

Second… these emerge naturally out of how we write code. We want to write reusable functions and classes. We want to be able to extend those classes without modifying the underlying code. Think about:

4 Tools of the Trade

In this course we will use many tools, including:

Tool Assignments Lecture Recordings
SSH
Linux
g++
Makefiles
Vim Hopefully
Git Hopefully
Unit Testing / TDD
Doxygen Maybe
Rustdoc Maybe
Pydoc Maybe
Tox Maybe
Gradle
CPPLint Maybe
Checkstyle Maybe
Pycodestyle / Pylint Maybe
PlantUML Maybe
SDEdit Maybe

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

Tool Assignments Lecture Recordings
Google Meet (Office Hours)
My Office (Office Hours)
Email
Questions

5 Lecture Examples

Most of my lectures will be based on my Review Examples:

Updates since 11 January 2019

6 Why [insert language here]?

Through your coursework you have focused all but exclusively on C++.

  1. We are continuing with C++ out of familiarity.
  2. We will cover Java based on its similarity to C++.
  3. We will learn Python because you have a solid foundation (and Python is fun).
  4. We will discuss Rust since it provides a different perspective (and Rust is fun).

7 Questions…

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

  2. Why do you use Vim?

  3. Am I required to use makefiles and SSH?

  4. Can I use Code::Blocks?

  5. What is your favorite language?

  6. Will you tell us a Morris story?

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

  8. Who is Raymond Hettinger?