Overview This module introduces you to the course organization, policies, and mechanics. We will review the structure of the course website. We will take a brief look at the major themes and areas of emphasis that we will cover this semester. We will discuss (briefly) the basics of Python 3 with particular emphasis on how PEP 8 and PEP 20 apply to C++, Python, Java, and Rust. Objectives At the conclusion of this Orientation Module students will be able to:
| Activities
Office Hours
Looking Forward a Few Weeks…
Getting Started
|
Overview This module covers the notion of ADTs from a design perspective. We motivate the notion of ADTs as a design principle, and move towards ADTs as a contract. The latter part of this module discusses the implementation of ADTs using C++ classes. This includes mechanics (e.g., Constructors and Destructors) and best practices (in the form of a checklist). Objectives At the end of this module students will be able to:
| Activities Review of the Fundamentals
The Fun Part!
Putting the Fun to Use!
Future Work
|
Overview This module covers the use of C++ iterators including using pointers, Objectives At the end of this module students will be able to:
| Activities
The Fun Examples!
Quarter Semester Review
|
Overview (Edits in Progress) This module starts with the C++ class checklist and an analysis of its analogues in Java and Python 3. Review 03 (specifically, Example 6) is revisited in the context of UML Class Diagrams. This module revisits and formalizes the initial and intermediary stages of designing an Object Oriented System. This process starts with Class Discovery and Documentation, then concludes UML class diagrams. This module introduces the basic syntax of Java and Python 3 in preparation for later Modules. Three partial Tic-Tac-Toe implementations are used as case studies: one in C++, one in Java, and one in Python 3. Unit Testing is discussed, briefly, in the context of interface design and completeness. This module includes discussions of workflows and software development processes (introduced in CS 250) in the context of ADT design, implementation, and testing. Objectives After completing this module students will be able to:
| Activities Design So Far… Iterators
Language Checklists & PlantUML
Formalizing UML Class Diagram Syntax
Non-scaling Design A Better Way (Classification & Relationships)
Unit Testing & Process (And Workflows)
|
Overview This module serves as an opportunity to review all materials, topics, and concepts covered thus, before moving on to inheritance, Java and Python. Objectives This module’s objectives are the set union of all previously listed module objectives. | Activities
|
Overview This module covers pointers and common memory management misteps, concerns and considerations. This module covers garbage collection and the associated challenges that must be considered when working with dynamic memory. This Module overlaps Spring Break. I expect you to relax during Spring Break. Objectives After completing this module students will be able to:
Relevance All programmers must be familiar with the issues surrounding memory management. This includes lanagues that allow low-level memory allocation (e.g., The | Activities
|
Overview This module discusses the notion of Inheritance in OOP. This includes an exploration subtyping as it relates to inheritance. We introduce the mechanic of function overriding, an mechanic analogous to function overloading. The application of dynamic binding and the associated mechanics (e.g., virtual functions and pure virtual functions) are a focal point. Once we discuss these mechanics in C++, the transition to other languages (e.g., Java, Python or Rust) are purely mechanical. This module includes two case studies: the Spreadsheet Example and the Shapes Example. Objectives After completing this module students will be able to:
| Activities Inheritance
Dynamic Binding
Modern Syntax & Practices
Assignments
|
Overview This module continues the discussion of design and UML. This includes modeling scenarios (partially and fully) through use cases, interaction diagrams, and sequence diagrams. Our first discussion will be a whirlwind introduction to UML Sequence Diagrams. We will examine the C++ Shapes Example. We will then revisit and refine our Tic-Tac-Toe design. Objectives After completing this module students will be able to:
| Activities
|
Overview This module continues our language comparison discussions, with a focus on Java. This brief module covers three brief examples. This module serves as preparation for our OOP in Java discussions. Objectives After completing this module students will be able to:
| Activities OOP Languages in General
Java & Python Tools, Tricks & Tips
Python (For Fun and Reference)
|
Overview This module discusses the implementation of ADTs using Java classes. This Module complements (i.e., it is a companion to) the earlier OOP in C++ Module. Objectives After completing this module students will be able to:
| Activities
C++ vs Java
Extra Credit
|
Overview In this module we discuss Graphical User Interfaces (GUIs) and threads in Java.
In this module we discuss the use of Java threads. We briefly cover the principles of multi-threading (parallelism). We conclude the discussion in the context of the running SpreadSheet example. Objectives After completing this module students will be able to:
| Activities Graphic User Interfaces (GUIs)
GUI Listeners & Lambdas
Multi-Threading
|
Overview In this Module we will revisit concepts discussed through the semester, but in Python (and maybe Rust)! | Activities Python
Rust |
Overview This is a pseudo-module. There is no new material (e.g., languages, paradigms ore patterns) covered. This Module is an end-of-semester wrap up. We will selected topics from throughput the semester. We will introduce a few quick topics to explore with your new skills and knowlege. | Activities Readings to Revisit
Previous Review Materials
End of Semester Review
Future Work
|
Overview This section lists Zoom meetings (including previous meetings) and supplemental office hours. | Activities
|
All times in this schedule are given in Eastern Time.
Symbol Key | |
---|---|
Lecture: | |
Slides : | |
Event or important date | |
Read | |
Do lab: | |
Assignment: | |
Take the | |
Do: | |
In your recitation section: | |
Under construction: |