Week # | Dates | General topic | Subtopics | Readings |
Week 1 | January 6 to January 10 | Computer Systems |
- Introduction and course outline
- Computer Hardware
- Digital information
- Number systems (specially binary numbers)
- Computer Networks
- Programming
| 1.1 - 1.4 (core), Appendix B. |
Week 2 | January 13 to January 17 | Introduction to programming |
- Programming Languages: Syntax and Semantics
- Java programs (Hello World)
- Compilers and Interpreters
- Introduction to objects
- Basic elements of Java: Keywords and literals
- Variables and assignments
| 1.5 (core), 1.6 (fun), 2.1 - 2.3 (core) |
Week 3 | January 20 to January 24 | Primitive Data Types, Objects, Input/Output |
- Primitive Data Types
- Arithmetic operators
- Standard I/O
- String concatenation
- Creating objects
- Class libraries
| 2.4 - 2.8 (core) |
Week 4 | January 27 to January 31 | Conditional control flow |
- The if statement
- Boolean expressions revisited
- The switch statement
- Equivalence of conditional statements
- More operators
| 2.9-2.10 (fun) 3.1 - 3.5 (core) |
Week 5 | February 3 to February 7 | Repetition: loops |
- The while statement
- The do/while statement
- The for statement
- Equivalence of loop statements
| 3.6 - 3.9 (core) 3.10 (fun) |
Week 6 | February 10 to February 14 | Static methods |
- Functions in general
- Static methods: definition and invocation
- Parameter passing
- Scope
- Static variables in a single class
| None |
Week 7 Midterm exam | February 17 to February 21 | Objects and Classes |
- Objects: attributes, state and behaviour.
- Anatomy of a Class: attributes and methods
- Encapulation
- Classes as Types
- Creating new objects
- Object relationships: aggregation (the ``has-a'' relation)
- Method decomposition
- Method overloading
| 4.1 - 4.6 (core), 4.7 - 4.8 (fun) |
Week 8 | February 24 to February 28 | Study break |
- Relax
- Catch-up
- Do the assignments
| All you have not read due to procrastination |
Week 9 | March 3 to March 7 | Enhancing Classes |
- References (or pointers) and aliases
- Static variables and static methods vs normal attributes and methods
- Interfaces and polymorphism
| 5.1 - 5.4 (core) 5.5 - 5.6 (fun) |
Week 10 | March 10 to March 14 | Arrays and Vectors |
- Arrays of primitive data objects
- Arrays of general objects
- Two-dimensional and n-dimensional arrays
- Sorting (Selection sort and Insertion sort)
- Vectors: growing arrays
| 6.1 - 6.5 (core) 6.6 (fun) |
Week 11 | March 17 to March 21 | Inheritance and Exceptions |
- Subclasses
- Shadowing attributes
- Overriding methods
- Polymorphism
- Accessing parent classes: the super reference
- Class hierarchy
- Exceptions
| 7.1 - 7.5 (core) 7.7 - 7.8 (fun) 8.1 (core) |
Week 12 | March 24 to March 28 | I/O Streams and Recursion |
- I/O Streams
- Saving and loading text files
- Introduction to recursion
| 8.2 - 8.4 (core) 8.5 (fun) 11.1 - 11.3 (core) 11.4 (fun) |
Week 13 | March 31 to April 4 | Dynamic Data Structures |
- Dynamic memory allocation
- Linked lists
- Stacks
- Queues
| 12.1 - 12.3 (core) 12.4 (fun) |
Week 14 | April 7 to April 11 | Introduction to Software Engineering and Review |
- The Software development cycle
- Analysis: problem domain models and requirements
- Design
- Prototypes
- Implementation
- Testing
- Maintainance
- Language features that aid Software Engineering
- Reusability
- Abstraction
- Modularity
- Review
| 10.1 - 10.4 (core) 10.5 (fun)
|