Week # | Dates | General topic | Subtopics | Readings | Events |
Week 1 | January 5 to January 9 | Computer Systems |
- Introduction and course outline
- Computer Hardware
- Digital information
- Number systems (specially binary numbers)
- Computer Networks
- Programming
| 1.1 - 1.4, Appendix B. | |
Week 2 | January 12 to January 16 | 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
- Primitive Data Types
| 2.0 - 2.5 | Assignment 1, Tutorial |
Week 3 | January 19 to January 23 | Primitive Data Types, Objects, Input/Output |
- Primitive Data Types
- Arithmetic operators
- Standard I/O
- String concatenation
- Creating objects
- Class libraries
| 2.6 - 2.9 | |
Week 4 | January 26 to January 30 | Conditional control flow |
- The if statement
- Boolean expressions revisited
- The switch statement
- Equivalence of conditional statements
- More operators
| 3.0 - 3.5 | Assignment 2 |
Week 5 | February 2 to February 6 | Repetition: loops |
- The while statement
- The do/while statement
- The for statement
- Equivalence of loop statements
| 3.6 - 3.9 |
Week 6 | February 9 to February 13 | Objects and Classes |
- Objects: attributes, state and behaviour.
- Anatomy of a Class: attributes and methods
- Classes as Types
- Creating new objects
- Parameter passing
- Scope
| 4.0 - 4.2 | Assignment 3 |
Week 7 | February 16 to February 20 | Objects and Classes (cont.) |
- Static variables and methods
- Recursion
| 5.1, 11.0 - 11.1 | |
Week 8 | February 23 to February 27 | Winter Break | Chill out and catch-up |
Week 9 | March 1 to March 5 | Objects and Classes (cont.) |
- Object relationships: aggregation (the ``has-a'' relation)
- Method decomposition
- Method overloading
| 4.3 - 4.5 | Assignment 4, Midterm: March 1st |
Week 10 | March 8 to March 12 | Enhancing Classes |
- References (or pointers) and aliases
- Review
| 5.0, 5.2 - 5.4 | |
Week 11 | March 15 to March 19 | 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.0 - 6.4 | Assignment 5 |
Week 12 | March 22 to March 26 | Inheritance and Interfaces |
- Subclasses
- Shadowing attributes
- Overriding methods
- Polymorphism
- Accessing parent classes: the super reference
- Class hierarchy
| 7.0 - 7.4, 5.5, 7.5 | |
Week 13 | March 29 to April 2 | Exceptions, I/O Streams and Data Structures |
- Exceptions
- I/O Streams
- Saving and loading text files
- Introduction to data structures
| 8.0 - 8.3, 12.1 - 12.3 | Assignment 6 |
Week 14 | April 5 to April 9 | Dynamic Data Structures and Software Engineering |
- Dynamic memory allocation
- Linked lists
- Stacks
- Queues
- The Software development cycle
| 12.1 - 12.3 | Tutorial |