Introduction to Computer Science I

CPSC 231 - Lecture 03 - Fall 2000

Christian Jacob


Course Outline

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.1

Hardware Anatomy

2.2

Software / Hardware Layers

2.3

The Register Machine

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

5.6

Analytical Reasoning

5.7

Analytical Approach

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.1

The Function main()

7.2

The cout and cin Streams

7.3

Comments

8.

Arithmetic in C++

Oct. 11 / 13

8.1

Variables and Types

8.2

Assignments and Compound Assignments

8.3

Arithmetic Expressions

8.4

Symbolic Constants

8.5

The char Data Type

Assignment 3: First C++ Encounter

Oct. 13

9.

Structured Programming with Control Structures

Oct. 16 - 23

9.1

Conditionals

9.2

Repetitions

9.3

Common Loop Idioms

9.4

Loops Bug Report

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.1

Arrays

10.2

Multi-dimensional Arrays

10.3

Strings as Special Arrays

10.4

Arrays of Strings

12.

Pointers

Nov. 06 / 08

12.1

Pointer Basics

12.2

Pointers and Arrays

12.3

Pointers and Strings

12.4

Pointer Arrays

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.1

Basic Definitions

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

2

Function Prototypes

3

Local and Global Variables

4

Return Values

5

Functional Decomposition

6

Parameters

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.1

Recursive Functions

15.2

Iterative versus Recursive Processes

15.3

Recursion Example

15.4

The Towers of Hanoi Example

Assignment 7

Dec. 08

Bonus Assignment

Dec. 11

Final Exam (Dec. 16th)

 

Back to CPSC 231-Lecture 03 Main Page 

 © Christian Jacob
 Last updated: September 2000

Ø