IM 1003

Programming Design

Instructor: Ling-Chieh Kung

Department of Information Management

National Taiwan University


About this Course

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 writing "correct" programs, we will also try to write "good" programs, i.e., those run 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. 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. All students who want to enroll in or audit this course are welcome. If there are too many students who want to enroll in this course, the instructor will announce the selection process in the first lecture.

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.

Basic information

  • Ling-Chieh Kung (孔令傑)
  • E-mail: lckung(AT)
  • Office: Room 413, Management Building II
  • Tel: 02-3366-1176.
  • C++ How to Program: Late Objects Version by Deitel and Deitel, seventh edition, Pearson Education.
    臺灣代理: 歐亞圖書, (02) 8912-1188..
  • A First Book of C++ by Bronson.
  • C++ Primer by Lippman, Lajoie, and Moo.
  • The C++ Programming Language by Stroustrup.
Online resources
  • All the homework assignments for this course are avaliable at PDOGS. If you are a students in NTU, NTNU, or NTUST, please sign up by yourself; otherwise, please contact the instructor to ask for an account.

Lecture materials

Lecture Topic Lecture Slides Example Programs Videos
1 Introduction Slides Programs Playlist
2 Selection and Repetition Slides Programs Playlist
3 Digital Systems Slides N/A Playlist
4 Variables and Arrays Slides Programs Playlist
5 Functions Slides Programs Playlist
6 Algorithms and Recursion Slides Programs Playlist
7 Complexity and Graphs Slides N/A Playlist
8 Pointers Slides Programs Playlist
9 C Strings Slides Programs Playlist
10 Self-defined Data Types in C Slides Programs Playlist
11 Classes Slides Programs Playlist
12 Operator Overloading Slides Programs Playlist
13 C++ Strings, File I/O, and Header Files Slides Programs Playlist
14 Inheritance and Polymorphism Slides Programs Playlist
15 Templates and Exception Handling Slides Programs Playlist