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.
Introduction to Scala.

- 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.
The Scala interpreter. First examples of Scala expressions.

- 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.
More on Scala expressions. Basic types and implicit conversions. Tuple types.  

- 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.
The Object Model of development. Origins. Evolution of programming languages, from machine code to OO languages. Main features of OO programming languages.

- Ch. 2 of [T]
- Ch. 3 of [S]
- Scala examples 3
Sep 8

The for construct in Scala. Iterating over collections.
The Object Model. Major features: abstraction and encapsulation. Examples of abstraction.

- 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.
Modules and modularity. Module decomposition vs class decomposition.

- 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.
OO modeling exercise: an information system for the university.

- Ch. 3 of [T]
 
Sep 20

Defining features of objects: identity, state and behavior. Objects as computational machines.
Identifying class associations and responsibilities in OO design. University information system example.

- Ch. 3 of [T]
- Class notes 3
- Ch. 6 of [S]
Sep 22

Discussion of Homework 1 grades.
Evaluating alternatives in implementing class associations and responsibilities. University information system example.
Class composition and inheritance in Scala. Text box example.

- Ch. 4 of [T]
- Ch. 11 of [S]
 
Sep 27

Text box example continued. Subclass polymorphism in Scala, method overriding.
Domain analysis and classification. Group exercise: train classifican example.

- Ch. 4 of [T]
- Ch. 11 of [S]
- Scala examples 5
Sep 29

More on domain analysis and classification. The train example.
Requirement elicitation and analysis. Use-case analysis. Modeling with CRC cards. Group exercise: the coffee vending machine.

- 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.
Discussion of domain model questions in Midterm.

- 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.
Introduction to UML.

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.
Discussion of Homework 3.

- Ch. 5 of [B]
- UML tutorial
Nov 3

Sequence diagrams. State machine diagrams. Examples.
Case study: a train traffic management system.

- 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.
Scala traits. 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.
More on case classes in Scala. Examples of use of anonymous classes and case classes in the Scala Swing library.

- 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.
Brief introduction of unit testing with ScalaTest library.

- Chap of 14 [S]
- ScalaTest examples
  (as SBT project)
 
Dec 13

Final exam at 12-2pm  

All of the above  




Course Info

  Announcements

  Lectures

  Syllabus

Course Work

  Projects

  Exams

Resources

  External

  Internal

  Readings

  ICON