Class Schedule
Note: In the readings below, "[T]" refers to the textbook and "[S]" to the recommended Scala book.
Date | Topic | Readings |
---|---|---|
Aug 23 |
Course introduction and syllabus overview. |
- Syllabus - Ch. 1 of [S] - Intro notes on Scala |
Aug 25 |
The complexity of software systems.
The challenges of software development.
Features of good software systems. |
- Ch. 1 of [T] - Ch. 2 of [S] - Class notes 1 |
Aug 30 |
The importance of design and modeling in software development.
Object oriented decomposition and design.
|
- Ch. 1 of [T] - Ch. 2 of [S] - Class notes 1 - Scala examples 1 |
Sep 1 | More on Scala. Expressions with side effect. Sequential composition. Blocks. Nesting and variable scoping. Functions. Unit returning functions. Recursive functions. Patterns and pattern matching. Arrays. |
- Ch. 3 of [S] - Scala examples 2 |
Sep 6 |
Immutable lists in Scala.
List construction and pattern matching.
Recursive functions over lists.
|
- Ch. 2 of [T] - Ch. 3 of [S] - Scala examples 3 |
Sep 8 |
The for construct in Scala.
Iterating over collections.
|
- Ch. 2 of [T] - Class notes 2 - Ch. 7 of [S] except 7.4 - Scala examples 4 |
Sep 13 |
Encapsulation and information hiding in OO languages.
Separating the interface from implementation.
Examples in Scala. |
- Ch. 2 of [T] - Class notes 2 (revised) - Ch. 4 of [S] |
Sep 15 |
Hierarchies. The class structure and the object structure.
Single and multiple inheritance. |
- Ch. 3 of [T] |
Sep 20 |
Defining features of objects:
identity, state and behavior.
Objects as computational machines. |
- Ch. 3 of [T] - Class notes 3 - Ch. 6 of [S] |
Sep 22 |
Discussion of Homework 1 grades.
|
- Ch. 4 of [T] - Ch. 11 of [S] |
Sep 27 |
Text box example continued.
Subclass polymorphism in Scala,
method overriding.
|
- Ch. 4 of [T] - Ch. 11 of [S] - Scala examples 5 |
Sep 29 |
More on domain analysis and classification.
The train example. |
- Ch. 4 of [T] |
Oct 4 | Discussion of Homework2 solutions. Additional Scala examples. |
|
Oct 6 | Midterm |
See Exams section |
Oct 11 | Functions and closures in Scala. Programming with higher-order functions. Examples and exercises. |
- Ch. 8 of [S] - Ch. 16 of [S], as needed - Scala examples 6 |
Oct 13 |
Parametric polymorphism in Scala.
Generic methods.
Motivation and examples.
|
- Scala examples 7 |
Oct 18 | More on parametric polymorphism in Scala. Generic methods and generic classes. Examples. |
- Scala examples 7 (revised) |
Oct 20 |
Discussion of evaluation of recursive method calls in Scala.
|
Ch. 5 of [B] |
Oct 25 | Basic UML diagrams. Use case diagrams. Class diagrams. Examples. |
- Ch. 5 of [B] - UML tutorial |
Oct 27 | no class |
|
Nov 1 |
More on UML diagrams.
Collaboration diagrams.
Activity diagrams.
Examples.
|
- Ch. 5 of [B] - UML tutorial |
Nov 3 |
Sequence diagrams.
State machine diagrams.
Examples.
|
- Ch. 5 of [B] - UML tutorial - Ch. 9 of [B] |
Nov 8 | More on the train traffic management system case study. |
Ch. 9 of [B] |
Nov 10 | Guest lecture by Tom Ball, Microsoft Research. |
|
Nov 15 |
Singleton classes (objects) in Scala.
Uses and examples.
|
- Ch. 4 of [S] - Scala examples 8 - Ch. 12 of [S] - Scala examples 9 |
Nov 17 | Handy Scala features: named method parameters, default values. Examples. Advanced features: anonymous classes, case classes. Examples. |
- Ch. 15 of [S] - Scala examples 10 |
Nov 22 | Thanksgiving break |
|
Nov 24 | Thanksgiving break |
|
Nov 29 |
Discussion about course project and GUI requirements.
|
- Ch. 15 of [S] - Scala examples 10 |
Dec 1 | Discussion of course project. Illustration of possible solutions for Part A, and common mistakes or shortcomings in submitted solutions. |
|
Dec 6 | Runtime assertions in Scala. Using assertion to in support of the Design-by-contract methodology. Pros and cons. Limitations. Examples. |
- Chap of 14 [S] - Scala examples 11 |
Dec 8 |
More on assertions and Design-by-contract in Scala.
Exercises.
|
- Chap of 14 [S] - ScalaTest examples (as SBT project) |
Dec 13 | Final exam at 12-2pm |
All of the above |