Programming Design, Spring 2013

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 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 aim to write ¡§good¡¨ programs, i.e., those running faster, using less memory, generating friendly user interfaces, being more extendable, having better formats, etc. To enhance the learning efficiency, basic concepts of data structure, computational complexity, and algorithm design will also be discussed. There is no prerequisite for this course.

This is a required course for the freshmen in the Department of Information Management in National Taiwan University. In most cases, all students who want to enroll in or audit this course are welcome.


Instructor

Ling-Chieh Kung (¤Õ¥O³Ç)
E-mail: lckung(AT)ntu.edu.tw
Office hour: 10-12pm, Thursday or by appointment
Office: Room 413, Management Building II
Tel: 02-3366-1176.


Teaching assistants

®]¦Ð§g. E-mail: r00725005(AT)ntu.edu.tw
§õ©s­×. E-mail: r01725007(AT)ntu.edu.tw


Syllabus

Syllabus


Basic information

Classroom: Meeting time: Textbook: References: On-line resources:


Tentative plan


Important Dates

Week Lecture Special event Lab Special event
12013/2/18The first lecture 2013/2/20
22013/2/25 2013/2/27
32013/3/4 2013/3/6
42013/3/11 2013/3/13
52013/3/18 2013/3/20Lab exam 1
62013/3/25 2013/3/27No class: IM Night
72013/4/1 2013/4/3No class: Spring Recess
82013/4/8 2013/4/10
92013/4/15 2013/4/17
102013/4/22 2013/4/24
112013/4/29 2013/5/1
122013/5/6Midterm exam 2013/5/8Lab exam 2
132013/5/13 2013/5/15
142013/5/20 2013/5/22
152013/5/27Project announcement 2013/5/29Guest speaker: Dr. Keynes Cheng
162013/6/3 2013/6/5
172013/6/10 2013/6/12
182013/6/17Final exam 2013/6/19Lab exam 3

Project due: 23:59 on 6/23 (Sun).


Lecture notes

Date Before-lecture Final Examples Note
2013/2/18 Slides Introduction
2013/2/25 Slides Examples Basic data types and operations
2013/3/4 Slides Examples Selection and repetition
2013/3/11 Slides Examples Arrays and C++ standard library
2013/3/18 Slides Examples Algorithms
2013/3/25 Slides Examples Functions and Randomization
2013/4/8 Slides Examples Pointers
2013/4/15 Slides Examples Recursion, searching, and sorting
2013/4/22 Slides Examples Self-defined data types
2013/4/29 Slides Strings
2013/5/13 Slides Examples Classes (Part 1)
2013/5/20 Slides Examples Classes (Part 2)
2013/5/27 Slides Inheritance
2013/6/3 Slides Polymorphism
2013/6/10 Slides Examples Data structures


Lab materials

Item Final version Covered on
Materials for Lab 1 Download 2013/2/20
Materials for Lab 2 Download 2013/2/27
Materials for Lab 3 Download 2013/3/6
Materials for Lab 4 Download 2013/3/13
Materials for Lab 5 Download 2013/4/10
Materials for Lab 6 Download 2013/4/17
Materials for Lab 7 Download 2013/4/24
Materials for Lab 8 Download 2013/5/1
Materials for Lab 9 2013/5/15
Materials for Lab 10 Download 2013/5/22


Homework

The Programming Design Online Grading System, PDOGS, is Here.

Due date Problems Data Solutions
2013/2/25 Homework 1 problems N/A Homework 1 solutions
2013/3/4 Homework 2 problems N/A Homework 2 solutions
2013/3/11 Homework 3 problems Homework 3 testing data Homework 3 solutions
2013/3/18 Homework 4 problems Homework 4 testing data Homework 4 solutions
2013/3/25 Homework 5 problems Homework 5 testing data Homework 5 solutions
2013/4/1 Homework 6 problems N/A N/A
2013/4/15 Homework 7 problems N/A Homework 7 solutions
2013/4/22 Homework 8 problems Homework 8 testing data Homework 8 solutions
2013/4/29 Homework 9 problems Homework 9 testing data Homework 9 solutions
2013/5/20 Homework 10 problems Homework 10 testing data Homework 10 solutions
2013/6/3 Homework 11 problems Homework 11 testing data Homework 11 solutions
2013/6/11 (NOT 6/10!) Homework 12 problems Homework 12 testing data Homework 12 solutions
2013/6/17 Homework 13 problems


Project

Due date Instructions Data
2013/6/24 Project instructions

  • Here are some suggestions for formatting your reports.


    Exams

    Date Problems Solutions Data
    2013/3/22 Lab exam 1 problems Lab exam 1 solutions Lab exam 1 testing data
    2013/5/6 Midterm problems Midterm solutions N/A
    2013/5/8 Lab exam 2 problems Lab exam 2 solutions Lab exam 2 testing data
    2013/6/17 Final problems Final solutions N/A
    2013/6/19 Lab exam 3 problems Lab exam 3 solutions Lab exam 3 testing data


    Grading


    Policies


    Remark

    Though this course counts for three units officially, I suggest you to treat it as five units and put efforts on it accordingly. If you do not have any programming experience, you do need to spend enough time on programming to really learn something. I know studying programming is definitely not easy, so please do not hesitate to let me know if you need any help.