IM 1003: Programming Design, Spring 2014

Instructor: Ling-Chieh Kung
Department of Information Management
National Taiwan University

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

Note. Though this course counts for three units officially, students are suggested to treat it as five units and put efforts accordingly. 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, so please do not hesitate to let me know if you need any help.


Basic information

Instructor
  • Ling-Chieh Kung (孔令傑)
  • E-mail: lckung(AT)ntu.edu.tw
  • Office: Room 413, Management Building II
  • Tel: 02-3366-1176.
  • Office hour: 9:10am-11:10am, Tuesday.
Teaching assistants
  • George Lee (李孟修). E-mail: r01725007(AT)ntu.edu.tw.
  • Michael Hsu (徐承志). E-mail: r02725013(AT)ntu.edu.tw.
  • Christine Hsieh (謝佳吟). E-mail: r02725040(AT)ntu.edu.tw.
Meetings
  • Lectures (in ENGLISH):
    • 2:20-5:20pm, Monday.
    • Room 305, Management Building II.
  • Labs (in CHINESE):
    • 6:30-8:15pm, Wednesday.
    • The large computer classroom, Management Building I.
Textbook
  • C++ How to Program: Late Objects Version by Paul Deitel and Harvey Deitel, Seventh edition, Pearson Education.
    臺灣代理: 東華書局/新月圖書, (02) 2311-4027.
References
  • A First Book of C++ by G. Bronson.
  • C++ Primer by S. B. Lippman, J. Lajoie, and B.E. Moo.
  • The C++ Programming Language by B. Stroustrup.
On-line resources
  • To check grades: CEIBA.
  • To download materials: This website.
  • To submit homework: PDOGS.
  • To discuss: the bulletin board "NTUIM-lckung" on PTT.


Syllabus

For topics, grading, policies, and a tentative schedule, please see the Syllabus.

Important update. The TAs will also offer office hour! You may find TAs at:


Important Dates

Week Date Special Event
62013/3/26Lab exam 1
72013/4/2No lab: spring recess
132013/5/12Midterm exam
132013/5/14Lab exam 2
182013/6/16Final project demonstrations
182013/6/18Lab exam 3


Lecture materials

Note: For codes in the slides, if they are put in green boxes, they will be provided in the "Codes" section.

Week Topic Slides Codes Lab materials Note
1 Overview and the first example Slides Codes Materials
2 Control Statements Slides Codes Materials
3 Arrays Slides Codes Materials
4 Functions (I) Slides Codes Materials
5 Functions (II) Slides Codes Materials Tutorial for Mac
6 Pointers Slides Codes Lab exam!
7 Self-defined data types Slides Codes Spring recess
8 Classes (I) Slides Codes Materials
9 Classes (II) Slides Codes Slides
10 Operator overloading Slides Codes
11 File I/O and C++ Strings Slides Codes Materials
12 Midterm exam N/A N/A N/A
13 Inheritence Slides Codes Lab exam!
14 Polymorphism Slides Codes
15 Algorithms and Recursion Slides Codes Materials
16 (No class: Dragon Boat Festival) N/A N/A N/A
17 (Final Project Demonstrations) N/A N/A N/A Teams to demonstrate
18 (Final Project Demonstrations) N/A N/A Lab exam! Teams to demonstrate


Homework

Problems Solution
Homework 1 Solution 1
Homework 2 Solution 2
Homework 3 Solution 3
Homework 4 Solution 4
Homework 5 Solution 5
Homework 6 Solution 6
Homework 7 Solution 7
Homework 8
Homework 9 Solution 9
Homework 10 Solution 10
Homework 11 Solution 11
Homework 12


Final project

Here is the description of the final project.

Here are some suggestions for formatting your reports.


Exams

Date Problems Solutions
2013/3/26 Lab exam 1 problems Lab exam 1 solution
2013/5/5 Midterm problems Midterm solution
2013/5/14 Lab exam 2 problems Lab exam 2 solution
2013/6/18 Lab exam 3 problems Lab exam 3 solution