In this course, we will introduce how to write computer programs for general purposes. The programming language we will study is C++, one of the most popular and powerful high-level programming language nowadays. We will start from the procedural programming part of C++, which is quite similar to the programming language C, and then discuss those object-oriented features of C++. While we will spend a lot of time on how to write "correct" programs, we will also try to write "good" programs, i.e., those running faster, using less memory, having better formats, generating friendly user interfaces, being more extendable, etc. The language C++ is just something that facilitates the delivery of the principles of computer programming. What really matter are the conceptual principles, not the C++ syntax or rules. Our objective is not to teach you how to write C++ programs; we want to make you be able to teach yourself any other programming languages in the future. C++ is chosen to be taught in this course mainly because, in my opinion, it is a "broad" language. This will be discussed in lectures.
This is a required course for first-year undergraduate students in the Department of Information Management in National Taiwan University. We do not assume any background in computer programming, and there is no prerequisite for this course. However, some experiences in courses like Introduction to Computer Science and Discrete Mathematics helps. In most cases, all students who want to enroll in or audit this course are welcome. This course is taught in English.
Note. Though this course counts for three units officially, students are suggested to treat it as at least five units and put efforts accordingly. In my opinion, this course should be (and indeed is) heavier than most introductory programming courses in NTU. If you do not have any programming experience, you do need to spend enough time on programming to really learn something. Studying programming is definitely not easy. Please do not hesitate to let me know if you need any help.
Instructor |
|
Teaching assistants |
|
Meetings |
|
Textbook |
|
References |
|
On-line resources |
|
Posted on | Syllabus | Notes |
2015/2/24 | Link | The basic planning of this course |
2015/5/13 | Link | The grading rule for attending PDAO |
Week | Date | Special Event |
7 | 2015/4/8 | Lab exam 1 |
12 | 2015/5/11 | Midterm exam |
12 | 2015/5/13 | Lab exam 2 |
18 | 2015/6/22 | Final project demonstrations |
18 | 2015/6/24 | Lab exam 3 |
Week | Topic | Slides | Codes | Lab materials | Note |
1 | (No class: national holiday) | N/A | N/A | (No lab) | N/A |
2 | Introduction | Slides | Codes | Materials | N/A |
3 | Control statements | Slides | Codes | Materials | N/A |
4 | Arrays | Slides | Codes | Materials | N/A |
5 | Functions | Slides | Codes | Materials | N/A |
6 | Recursion, searching, and sorting | Slides | Codes | (No lab: spring recess) | N/A |
7 | (No class: spring recess) | N/A | N/A | (Lab exam 1) | N/A |
8 | Pointers | Slides | Codes | Materials | N/A |
9 | Self-defined data types | Slides | Codes | Materials | N/A |
10 | Classes (1) | Slides | Codes | (No lab: IM Night) | N/A |
11 | Classes (2) | Slides | Codes | Materials | N/A |
12 | (Midterm exam) | N/A | N/A | (Lab exam 2) | N/A |
13 | Operator overloading | Slides | Codes | (No lab) | N/A |
14 | File I/O and strings | Slides | Codes | Materials | N/A |
15 | Inheritance | Slides | Codes | Materials | N/A |
16 | Polymorphism | Slides | Codes | Materials | N/A |
17 | Data structures | Slides | Codes | Slides | |
18 | (Final Project Demonstrations) | (Lab exam 3) |
Here are some suggestions for formatting your reports.
Date | Problems | Solutions |
2015/4/8 | Lab exam 1 problems | Lab exam 1 solutions |
2015/5/11 | Midterm problems | Midterm solution |
2015/5/13 | Lab exam 2 problems | Lab exam 2 solution |
2015/6/24 | Lab exam 3 problems | Lab exam 3 solution |