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 Object Oriented Programming Languages (e.g., C++, Python, Java, and Rust. Objectives At the conclusion of this Orientation Module students will be able to:
| Activities
Office Hours
Selected CS 252 Review Readings
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!
The Fun Examples… in Other Languages!
|
Overview This module serves as an opportunity to review all materials, topics, and concepts covered thus, before design and testing. Objectives This module’s objectives are the set union of all previously listed module objectives. | Activities
|
Overview 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 with UML class diagrams. 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. Objectives After completing this module students will be able to:
| Activities Design So Far…
PlantUML
Formalizing UML Class Diagram Syntax
Non-scaling Design A Better Way (Classification & Relationships)
Unit Testing & Process (And Workflows)
|
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. We will revisit and refine our Tic-Tac-Toe design. Objectives After completing this module students will be able to:
| Activities
|
Overview Note: the use of Midterm in this module refers to the point in the semester, not the Midterm Exam. 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. 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 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
Refactoring & Design
C++ vs Java
|
Overview In this module we discuss Graphical User Interfaces (GUIs) and threads in Java. We briefly cover the principles of multi-threading (parallelism) throught the 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)! Objectives After completing this module students will be able to:
| 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 revisit 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
|
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: |