IM 1003, Spring 2016

Programming Design

Instructor: Ling-Chieh Kung

Department of Information Management

National Taiwan University


Go

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

Instructor
  • Ling-Chieh Kung (孔令傑)
  • E-mail: lckung(AT)ntu.edu.tw
  • Office: Room 413, Management Building II
  • Tel: 02-3366-1176.
  • Office hour: by appointments.
Teaching Assistants
  • Willy Liao (廖偉宏). E-mail: r03725035(AT)ntu.edu.tw.
  • Parker Chiang (江柏宣). E-mail: r04725020(AT)ntu.edu.tw.
  • Chien Huang (黃千瑜). E-mail: r04725021(AT)ntu.edu.tw.
Meetings
  • Lectures: 2:20-5:20 pm, Monday. Room 305, Management Building 2.
  • Labs: 6:25-8:10 pm, Wednesday. The large computer classroom, Management Building 1.
Textbook
  • C++ How to Program: Late Objects Version by Deitel and Deitel, seventh edition, Pearson Education.
    臺灣代理: 歐亞圖書, (02) 8912-1188..
References
  • A First Book of C++ by Bronson.
  • C++ Primer by Lippman, Lajoie, and Moo.
  • The C++ Programming Language by Stroustrup.
On-line resources
  • To check grades: CEIBA.
  • To download materials: This website.
  • To submit homework: PDOGS.
  • To discuss: Piazza.

Syllabus

For a detailed description about this course, including course policies, grading rules, tentative schedules, etc., please see the syllabus. Whenever there is an update, a new version will be posted with a short note describing the update.

Post Syllabus Notes
2016/1/21 Link The basic planning of this course
2016/2/22 Link The official plan at the beginning of this semester
2016/5/7 Link Changing the lecture topics starting from Week 9
2016/5/25 Link Cancellation of two labs

Lecture materials

Week Topic Lecture Slides Lecture Programs Lab Materials
1 Introduction Slides Programs Slides and Codes
2 (No class: 228 Memorial Day) N/A N/A N/A
3 Selection and Repetition Slides Programs Slides and Codes
4 Variables and Arrays Slides Programs Slides and Codes
5 Functions Slides Programs Slides and Codes
6 Algorithms and Recursion Slides Programs N/A
7 (No class: Spring Break) N/A N/A Slides and Codes
8 Pointers Slides Programs Slides and Codes
9 C Strings Slides Programs Slides and Codes
10 Self-defined Data Types in C Slides Programs (IM Night)
11 Classes Slides Programs Slides and Codes
12 (Midterm Project Demonstration) N/A N/A N/A
13 Operator Overloading Slides Programs Slides and Codes
14 C++ strings, File I/O, and Self-defined Header Files Slides Programs Slides and Codes
15 Inheritance and Polymorphism Slides Programs Slides and Codes
16 Templates, Vectors, and Exceptions Slides Programs (Dragon Boat Festival)
17 Data Structures Slides Programs Slides
18 Final Project Presentations N/A N/A N/A

Homework

Exam

Exam Seating Problems Solutions
Lab exam 1 Large room, Small room Problems Solutions
Lab exam 2 Large room, Small room Problems Solutions
Lab exam 3 Large room, Small room Problems Solutions

Projects

Item Description
Midterm Project Midterm project problem description
Midterm Project Groups and Demos Midterm project groups and demo schedule
Final Project Final project problem description