|
|
|
|
|
|
|
|
|
|
|
I. Computer Science as a Discipline
|
|
|
|
|
|
|
|
|
|
1.
|
Introducing the Universal Machine 
|
Sep. 18
|
|
|
|
|
|
1.1
|
The Very Idea of the Universal Machine
|
|
|
|
|
|
1.2
|
Turing's Symbol Manipulator
|
|
|
|
|
|
1.3
|
A Brief History of Practical Universal Machines
|
|
|
|
|
2.
|
Anatomy of a Computer 
|
Sep. 20
|
|
|
|
|
|
|
|
|
|
|
2.2
|
Software / Hardware Layers
|
|
|
|
|
|
|
|
|
|
|
2.4
|
Faces of the Machine 
|
|
|
|
|
3.
|
Operating Systems and Networks 
|
Sep. 22
|
|
|
|
|
|
3.1
|
Brief History of Operating Systems
|
|
|
|
|
|
3.2
|
Multiprogramming and Multitasking
|
|
|
|
|
|
3.3
|
Network Operating Systems
|
|
|
|
|
|
3.4
|
Booting an Operating System
|
|
|
|
|
|
3.5
|
Operating System Architecture
|
|
|
|
|
4.
|
Low-Level Data Representation 
|
Sep. 25 / 27
|
|
|
|
|
|
4.1
|
Binary Number Systems
|
|
|
|
|
|
4.2
|
Conversions between Number Systems
|
|
|
|
|
|
4.3
|
Binary Arithmetic and Logic
|
|
|
|
|
Assignment 1: UNIX Orientation
Assignment 2: Binary Numbers
|
|
|
Sep. 29
Oct. 02
|
|
|
|
II. Problem Solving
|
|
|
|
|
|
|
|
|
|
5.
|
Problem Solving before Programming 
|
Oct. 02
|
|
|
|
|
|
5.1
|
Problem-Solving Strategies
|
|
|
|
|
|
5.2
|
Algorithms as Paths Through "Problem Spaces"
|
|
|
|
|
|
5.3
|
Givens, Goals, and Resources
|
|
|
|
|
|
5.4
|
Analysing and Exploring Problem Spaces
|
|
|
|
|
|
5.5
|
From Blind Search to Informed Search
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6.
|
Programming Languages and their Translators 
|
Oct. 04
|
|
|
|
|
|
6.1
|
Interpreters versus Compilers
|
|
|
|
|
|
6.2
|
How Compilers Produce Actual Machine Code
|
|
|
|
|
|
6.3
|
A Closer Look at Translation
|
|
|
|
|
|
6.4
|
A Brief History of Programming Languages
|
|
|
|
III. Problem-Oriented Programming in C++
|
|
|
|
|
|
|
|
|
|
7.
|
A Taste of C++ 
|
Oct. 06 / 11
|
|
|
|
|
|
|
|
|
|
|
7.2
|
The cout and cin Streams
|
|
|
|
|
|
|
|
|
|
8.
|
Arithmetic in C++ 
|
Oct. 11 / 13
|
|
|
|
|
|
|
|
|
|
|
8.2
|
Assignments and Compound Assignments
|
|
|
|
|
|
8.3
|
Arithmetic Expressions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assignment 3: First C++ Encounter
|
|
|
Oct. 13
|
|
|
|
|
9.
|
Structured Programming with Control Structures 
|
Oct. 16 - 23
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assignment 4: Making Change
|
|
|
Oct. 27
|
|
|
|
|
Midterm Exam (Nov. 1st)
|
|
|
|
|
|
IV. Tools for Data Abstraction
|
|
|
|
|
|
|
|
|
|
10.
|
Data Abstraction with Structured Data Types 
|
Nov. 03
|
|
|
|
|
|
|
|
|
|
|
10.2
|
Multi-dimensional Arrays
|
|
|
|
|
|
10.3
|
Strings as Special Arrays
|
|
|
|
|
|
|
|
|
|
12.
|
Pointers 
|
Nov. 06 / 08
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12.3
|
Pointers and Strings
|
|
|
|
|
|
|
|
|
|
|
12.5
|
Problems with Pointers
|
|
|
|
|
|
12.6
|
Multiple Indirection Pointers to Pointers
|
|
|
|
|
Assignment 5: Phone Numbers to Words
|
|
|
Nov. 10
|
|
|
|
|
14.
|
Structures 
|
Nov. 10 / 15
|
|
|
|
|
|
|
|
|
|
|
14.2
|
Accessing Structure Members
|
|
|
|
|
|
14.3
|
Arrays of Structures
|
|
|
|
|
|
14.4
|
Structures and Pointers
|
|
|
|
|
|
14.5
|
More Complex Structures
|
|
|
|
V. Procedural Abstraction with Functions
|
|
|
|
|
|
|
|
|
|
11./13.
|
Functions and Decomposition 
|
Nov. 17 - 22
|
|
|
|
|
|
1
|
Flow of Control through Function Calls
|
|
|
|
|
|
|
|
|
|
|
3
|
Local and Global Variables
|
|
|
|
|
|
|
|
|
|
|
5
|
Functional Decomposition
|
|
|
|
|
|
|
|
|
|
|
7
|
Generalizing Functions with Parameters
|
|
|
|
|
|
8
|
Default Values for Parameters
|
|
|
|
|
15.
|
File Input and Output 
|
Nov. 24
|
|
|
|
|
|
1
|
Opening and Closing Files
|
|
|
|
|
|
2
|
Reading and Writing Text Files
|
|
|
|
|
|
3
|
Random Access to File Data
|
|
|
|
|
Assignment 6: Minesweeper
|
|
|
Nov. 24
|
|
|
|
|
16.
|
Recursion 
|
Nov. 27 / 29
|
|
|
|
|
|
|
|
|
|
|
15.2
|
Iterative versus Recursive Processes
|
|
|
|
|
|
|
|
|
|
|
15.4
|
The Towers of Hanoi Example
|
|
|
|
|
|
|
Dec. 08
|
|
|
|
|
|
|
Dec. 11
|
|
|
|
|
Final Exam (Dec. 16th)
|
|
|
|