305171 Computer Programming

Computer Engineering Major

Academic Year 2008, Semester 2

Overview

Computer Programming is the craft of writing a series of instructions that make a computer (or computers) perform an action or a particular type of work.  The focus is on systematic problem solving.  To ensure the high quality of the programs, good engineering practices and disciplines will be enforced throughout the process of developing computer program.

Objective

In this course, students will learn
  1. How to think systematically.
  2. How to record their thought.
  3. How to translate their thoughts into programming codes.
  4. How to measure their performance and quality of their products.
  5. How to use data to improve their personal processes.

Approach

The most effective way to learn how to write programs is learning-by-doing.  Hence, in this course, students will have a lot of opportunity to master the concept of computer programming.  To accomplish the objectives of this course:
  1. Students are required to take notes and turn in the notes every week.
  2. Students must record data into their personal journals and turn in the journal every week.
  3. Every week, there will be two quizzes: one for checking the understanding of the previous topics and the other for checking readiness of students for the upcoming materials.
  4. The assignments will be assigned before each topic is introduced to encourage the student to prepare for the upcoming lecture.  Another assignments will be assigned after each topic to reinforce the understanding. 

Reference

There is no official textbook for this class; however, the one that this class based on is
Felleisen, M., et al., How to Design Programs: An Introduction to Computing and Programming. MIT Press, 2001, ISBN 0262062186 www.htdp.org
 

Course Outline

The following schedule is tentative only; it may change depending on the circumstances.

Week

Topics

References

1

Systematic Thinking Process

HTDP Ch. 1 – 3

2

Basic Conditional Expression

HTDP Ch. 4

3

Complex Conditional Expression

HTDP Ch. 4

4

Compound Data 1: Structure

HTD Ch. 6 – 7

5

Compound Data 2: Lists

HTDP Ch. 9 – 10

6

Compound Data 2: Lists

HTDP Ch. 17

7

Composing Functions

HTDP Ch. 12

8

Midterm Exam

-

9

Self-referential Data: Tree

HTPD Ch 14

10

Abstracting Design

HTPD Ch 19 – 20

11

Generative Recursion

HTPD Ch 25 – 26

12

Accumulating Knowledge

HTPD Ch 30 – 32

13

Repeat week 1 – 3 in C++

HTDP Ch 1 – 4

14

Repeat week 4 – 6 in C++

HTPD Ch 6 – 10, 17

15

Repeat week 7 – 9 in C++

HTPD Ch 12, 14

16

Repeat week 10 -12 in C++

HTPD Ch 19 – 20, 25 – 26, 30 - 32

17

Final Exam

-

Note that the above schedule is tentative by nature; it may change at the instructor's discretion.

Evaluation

The course evaluation will be divided equally between examinations and assignments.  The distribution of each half is shown below.
ItemsWeight
Assignments40%
Discussion10%
Quiz10%
Midterm Exam20%
Final Exam20%
Please make sure that you have carefully read and understand the academic policy.

Note that the above description is only tentative; it may change at the instructor's discretion.