CS330, Fall 2018

CS330 Outline

Fall 2018

Upcoming Events
1 Course Overview 08/26/2018 - 08/28/2018

Overview

This module introduces you to the course organization, policies, and mechanics. We review the structure of the course website.

We take a brief look at the major themes and areas of emphasis that we will cover this semester.

Activities
  1. text Read: syllabus.
  2. text Read: communications policy.
  3. event Attend or watch the orientation session 08/28/2018, 7:30PM EDT
  4. “Meet and Greet” Forum (optional, in Blackboard)
2 Pre-OO: ADTs & Classes
2.1 ADTs 08/29/2018 - 09/01/2018

Overview

This module covers the notion of ADTs from the a design perspective. We motivate the notion of ADTs as a design principle, and move towards ADTs as a contract.

Activities
  1. lecture Read lecture notes: Designing for ADTs
  2. text Read: Booch, chapter 1 & chapter 2, up to “The Meaning of Hierarchy”
  3. lecture Read lecture notes: ADTs
2.2 Implementing ADTs with classes 09/02/2018 - 09/12/2018

Overview

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).

The first graded assignment takes place in this module and requires you apply these concepts along with those discussed in CS 250 and CS 252.

Activities
  1. lecture Read lecture notes: Implementing ADTs in C++ Classes
  2. text Read C++ text as needed
  3. lecture Read lecture notes: Copying and Moving Data
  4. video A C++ Class Designer's Checklist
  5. asst Do assignment: C++ ADTs Due: 09/22/2018
2.3 From C++ to Java 09/13/2018 - 09/22/2018

Overview

In this course we will be using two of the most widely used OOPLs (Object-Oriented Programming Languages) – C++ and Java. Everyone enrolled in this course should be quite familiar with C++ already (although if it has been a while since your last C++ course or if your grades in that course were marginal (below B), now would be a good time to go back and review.

Most students in this course will be unfamiliar with Java, however, so we will take a little time to build up familiarity with it. There’s a lot of hands-on work (“labs”) in this section because the issue is really not so much “learning” Java as “getting comfortable” with it.

Activities
  1. lecture Read lecture notes: Java - First Impressions for a C++ Programmer
  2. cs382 Do Java lesson Hello World: Commentary
  3. lab Do lab activity: Write Once, Run Anywhere
  4. cs382 Do Java lesson Translating Java Code
  5. lab Do lab activity: Java Projects in Eclipse
  6. cs382 Do Java lesson Language Basics: Commentary
  7. cs382 Do Java lesson Numbers and Strings: Commentary
  8. cs382 Do Java lesson Exceptions: Commentary

  9. lab Do lab activity: Lab: Throwing and Catching Exceptions
  10. cs382 Do Java lesson Basic I/O: Commentary
  11. lab Do lab activity: Refactoring Java Code in Eclipse
  12. lab Do lab activity: Debugging Java with Eclipse
  13. cs382 Do Java lesson Classes and Objects: Commentary
  14. cs382 Do Java lesson Packages: Commentary
  15. lecture Read lecture notes: A Class Designer's Checklist for Java
  16. asst Do assignment: Java ADTs Due: 09/30/2018

3 OOA&D: Workflows, Models, & Classification
3.1 Process 09/23/2018 - 09/29/2018

Overview

This module discusses workflows and software development processes (introduced in CS 250) in the context of ADT design, implementation, and testing.

Activities
  1. lecture Read lecture notes: The Object-Oriented Philosophy
  2. text Read: Booch, chapter 6
  3. lecture Read lecture notes: Workflows
  4. text Read: Fowler, chapter 2
  5. lecture Read lecture notes: Software Development Processes
3.2 Classification 09/30/2018 - 10/06/2018

Overview

This module discusses the initial stages of analysis of an Object Oriented System. This process starts with Class Discovery and Documentation, then concludes with class descriptions or CRC cards.

Activities
  1. text Read: Booch, chapter 2 (remainder), chapter 3, up to 3.2, chapter 4
  2. lecture Read lecture notes: Discovering and Documenting Classes
  3. video Example: Starting a Domain Model
3.3 Relationships 10/10/2018 - 10/16/2018

Overview

This module discusses the intermediate stages of analyzing an Object Oriented System. This process continues with UML class diagrams.

The first Design Assignment is assigned during this section. You (and optionally your group) when follow the design process for an instructor selected domain.

Activities
  1. text Read: Fowler, chapter 3, chapter 5: “Interfaces and Abstract Classes”, “Qualified Associations”, “Template (Parameterized) Class”, “Visibility”

  2. lecture Read lecture notes: UML Class Relationship Diagrams

  3. lecture Read lecture notes: Example: Class Relationship Diagrams (Domain Model)

  4. asst Do assignment: Early Elaboration Due: 10/25/2018

  5. event End of material to be covered on the midterm exam

3.4 OOA&D: Use Cases 10/17/2018 - 10/23/2018

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.

The second design assignment is assigned during this module. You (and your group) will extend your Early Elaboration Assignment solution in this exercise.

Activities
  1. text Read: Fowler, chapter 9

  2. lecture Read lecture notes: Use Cases

  3. text Read: Booch, chapter 5, section 5.8.

  4. text Read: Fowler, chapter 4
  5. lecture Read lecture notes: Sequence Diagrams

  6. lecture Read lecture notes: Example: Further Elaboration on Automated Assessments

  7. asst Do assignment: Asst: Later Elaboration Due: 10/31/2018

4 Object Oriented Programming (OOP)
4.1 Inheritance 10/24/2018 - 10/30/2018

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 module concludes with an exploration of these mechanics in the context of the Spreadsheet Example.

Activities
  1. lecture Read lecture notes: Inheritance: The is-a relation
  2. cs382 Do Java lesson Inheritance in Java: Commentary
  3. text Read C++ text as needed
4.2 Dynamic Binding 10/31/2018 - 11/10/2018

Overview

This module continues our discussion of Inheritance. The application of dynamic binding and the associated mechanics (e.g., virtual functions and pure virtual functions) are discussed.

4.3 Graphic User Interfaces 11/11/2018 - 11/20/2018

Overview

In this module we discuss GUIs and how

  • objects are used to define a graphical interface
  • to handle user interaction (e.g., clicking a button) through Listeners
Activities
  1. lecture Read lecture notes: Functors - Objects That Act Like Functions
  2. text Read: Java Tutorial: Creating a GUI with JFC/Swing
  3. lecture Read lecture notes: Example: Building a Java GUI
  4. asst Do assignment: (You can start the assignment listed in the next module upon completing the readings for this one. You won’t be able to complete all of the tasks for it, however.)
4.4 Multi-Threading 11/26/2018 - 12/07/2018

Overview

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.

5 Exams and Special Events
Activities
  1. event Classes Start 08/26/2018
  2. event Fall Break 10/06/2018 2018-10-66
  3. exam Take the exam: Midterm Exam 10/16/2018 - 10/17/2018
  4. event Thanksgiving Break 11/20/2018 - 11/25/2018
  5. event Last day of classes 12/07/2018
  6. exam Take the exam: Final Exam 12/09/2018 - 12/11/2018

All times in this schedule are given in Eastern Time.

Symbol Key
lecture Lecture:
slides Slides :
event Event or important date
text Reading
lab Do lab:
asst Assignment:
exam Exam
cs382 Java lesson
construct Under construction: