COMP 151 Object-Oriented Programming [3-0-2:3]
2006 Spring Term
 
Lecture 1, MWF 15:00-15:50, LTF
Dr. Dekai WU, Rm 3539, 2358-6989, dekai@cs.ust.hk
 
Lecture 2, MWF 11:00-11:50, LTE
Dr. Zhang FAN, Rm 3536, 2358-6992, zhangfan@cs.ust.hk
 
Announcements<- Important

Always check http://www.cs.ust.hk/~dekai/151/ for up-to-the-minute announcements.
Lab info is at http://course.cs.ust.hk/comp151/labs/.
Newsgroup is hkust.cs.class.151. Always read before asking/posting/emailing your question.

COURSE GRADES FOR LECTURE SECTION 1 AND FOR LECTURE SECTION 2 HAVE BEEN POSTED.

Final exam grades have been posted. Here is a histogram showing the distribution of the grades (click to enlarge):

final exam histogram

Assignment 3 grades with detailed point breakdowns have been posted. Remember not to confuse your "Total" points with "Your A3 Score". The "Total" points is a raw score that shows you how well you are programming (out of 100 points). "Your A3 Score" shows the actual grade you will get on Assignment 3, after we've applied the grading curve. This is also out of 100 points, and we've added extra credit to students who did really well. Here is a histogram showing the distribution of the Total raw points (click to enlarge):

A3 histogram

Assignment 2 grades with detailed point breakdowns have been posted. Remember not to confuse your "Total" points with "Your A2 Score". The "Total" points is a raw score that shows you how well you are programming (out of 100 points). "Your A2 Score" shows the actual grade you will get on Assignment 2, after we've applied the grading curve. This is also out of 100 points, and we've added extra credit to students who did really well. Here is a histogram showing the distribution of the Total raw points (click to enlarge):

A2 histogram

Assignment 1 grades with detailed point breakdowns have been posted. Remember not to confuse your "Total" points with "Your A1 Score". The "Total" points is a raw score that shows you how well you are programming (out of 100 points). "Your A1 Score" shows the actual grade you will get on Assignment 1, after we've applied the grading curve. This is also out of 100 points, and we've added extra credit to students who did really well. Here is a histogram showing the distribution of the Total raw points (click to enlarge):

A1 histogram

2006.05.22:A sample final exam plus a sample midterm and another sample midterm are available for your practice - Good luck on the final!

2006.05.12: Assignment 3 due date has been extended to Sun May 21, 2006 at 23:59.

2006.05.09: Assignment 3 will be due Tues May 16, 2006 at 23:59 via CASS.

2006.04.30: Assignment 2 will be due Tues May 9, 2006 at 23:59 via CASS.

2006.04.21: Assignment 1 due date has been extended to Fri Apr 28, 2006 at 23:59.

2006.04.15: Assignment 1 will be due Tues Apr 25, 2006 at 23:59 via CASS.

Policies

ACADEMIC CALENDAR DESCRIPTION

Object-oriented programming concepts and techniques. Software reuse. Classes, objects, and methods. Abstract data types. Object creation and initialization. Message passing. Class hierarchies and inheritance. Polymorphism. Templates and algorithm abstraction. Exclusion: COMP 251 (prior to 1999-2000) Prerequisite: COMP 103 or COMP 104

TEXTBOOKS

  1. Thinking in C++, Volume One: Introduction to Standard C++ (2nd Edition), by Bruce ECKEL. Prentice-Hall, 2000. ISBN: 0-13-979809-9.
  2. Thinking in C++, Volume Two: Practical Programming, by Bruce ECKEL and Chuck ALLISON. Prentice-Hall, 2004. ISBN: 0-13-035313-2.
Full text and code for both books are available online at no cost at http://www.BruceEckel.com.
An official Hong Kong mirror site for fast downloading is at http://www.cs.ust.hk/~dekai/library/ECKEL_Bruce/.

REFERENCE BOOKS

  1. The C++ Programming Language (3rd Edition), by Bjarne STROUSTRUP. Addison-Wesley, 1997. ISBN: 0-201-88954-4. This classic reference (by the designer of C++) is a must-have for every serious C++ programmer, covering details often omitted in textbooks.
  2. C++ Primer (3rd Edition), by Stanley B. LIPPMAN and Josee LaJOIE. Addison-Wesley, 1998. ISBN: 0-201-82470-1. This traditional text can be used as a first book for learning C++ but assumes that the reader is familiar with programming, and more insightful textbooks have now appeared since it was first written.
  3. Problem Solving with C++: The Object of Programming, Walter SAVITCH. Addison-Wesley, 1996. This book gives an introduction to C++ and introduces basic programming techniques.
  4. C++: Effective Object-Oriented Software Construction: Concepts, Principles, Industrial Strategies, and Practices, by Kayshav DATTATRI. Prentice Hall, 1997. ISBN: 0-13-104118-5. This book is good provided that you are fluent with C++ and it emphasizes more on the design, programming techniques, and why C++ is designed as it is now.

TAS

OFFICE HOURS

You are welcome to knock on the doors of the instructor any time. The TA's office hours are posted at http://course.cs.ust.hk/comp151/labs/.

REQUIRED SIGNATURE ON HONOR STATEMENT

To receive a passing grade, you are required to sign an honor statement acknowledging that you understand and will uphold all policies on plagiarism and collaboration.

PLAGIARISM

All materials submitted for grading must be your own work. You are advised against being involved in any form of copying (either copying other people's work or allowing others to copy yours). If you are found to be involved in an incident of plagiarism, you will receive a failing grade for the course and the incident will be reported for appropriate disciplinary actions.

University policy requires that students who cheat more than once be expelled. Please review the cheating topic from your UST Student Orientation.

Warning: sophisticated plagiarism detection systems are in operation!

COLLABORATION

You are encouraged to collaborate in study groups. However, you must write up solutions on your own. You must also acknowledge your collaborators in the write-up for each problem, whether or not they are classmates. Other cases will be dealt with as plagiarism.

EXAMINATIONS

No reading material is allowed during the examinations. No make-ups will be given unless prior approval is granted by the instructor, or you are in unfavorable medical condition with physician's documentation on the day of the examination. In addition, being absent at the final examination results in automatic failure of the course according to university regulations, unless prior approval is obtained from the department head.

There will be one midterm worth 250 points, and one final exam worth 350 points.

HOMEWORK

All programming assignments must be submitted at the beginning of lecture on the due date. Programming assignments must be in C++ on Unix and will be collected electronically using the automated ACS (assignment collection system). Late assignments cannot be accepted. Sorry, in the interest of fairness, exceptions cannot be made.

Programming assignments will account for a total of 250 points.

LABS

All information for laboratory assignments is at http://course.cs.ust.hk/comp151/labs/.

Laboratory assignments will be announced at the end of each week, and will be due on the following Friday at 23:00. Laboratory assignments must be in C++ on Unix and will be collected electronically using the automated ACS (assignment collection system). Late assignments cannot be accepted. Sorry, in the interest of fairness, exceptions cannot be made.

You will also have the option to turn in your laboratory assignments in lab by demonstrating to the TA. This will also give you an opportunity to get an early indication of whether your assignment is correct. If not, you may still decide to fix it, and then wait until the Friday 23:00 ACS collection to turn in your assignment.

There will be approximately 10 laboratory assignments, each accounting for 15 points, for a total of 150 points.

GRADE GUARANTEES

The total points you can achieve in the course is 1000.  The course will be graded on a curve, but subject to the following guarantees:
 
If you achieve 900 points you will receive no less than a A grade.
800 points B
700 points C
600 points D
Schedule Wk Event Paradigm Topic Notes Reading Assignments
2006.02.01 1 Lecture Administrivia (honor statement, HKUST classroom conduct) Business Week, The Perils of JavaSchools
2006.02.03 1 Lecture SwEngr Introduction: C++ and software engineering (doxygen notes: Marine's, Adam's) V1.Ch1
2006.02.06 2 Lecture SwEngr Introduction: Data abstraction V1.Ch2
2006.02.08 2 Lecture SwEngr Introduction: Data abstraction (cont) (YourPets2a.cpp, YourPets2b.cpp)
2006.02.10 2 Lecture SwEngr Separate compilation (CheckDate.cpp, Date.cpp, Date.hpp) V1.Ch3 (p202-210)
2006.02.13 3 Lecture SwEngr Separate compilation (cont) (UseSqrt.cpp, CheckDate2.cpp, Date2.cpp, Date2.hpp, DayOfWeek.cpp, DayOfWeek.hpp, Lang.cpp, Lang.hpp)
2006.02.15 3 Lecture Procedural Declaration and definition (reverse_print.cpp, use_reverse_print.cpp) V1.Ch4
2006.02.17 3 Lecture Procedural Declaration and definition (cont) (reverse_print.hpp) V1.Ch5
2006.02.20 4 Lecture Procedural Pointers V1.Ch3, ref V1.Ch13
2006.02.22 4 Lecture Procedural Pointers (cont), allocating 2D arrays (4-up)
2006.02.24 4 Lecture Procedural References V1.Ch3
2006.02.27 5 Lecture Procedural Const, argc & argv V1.Ch8
2006.03.01 5 Lecture StaticOO Overloading and constructors V1.Ch6
2006.03.06 6 Lecture StaticOO Overloading and constructors (cont)
2006.03.08 6 Lecture StaticOO Destructors V1.Ch6
2006.03.10 6 Lecture StaticOO Order of construction/destruction, Post Office example V1.Ch6
2006.03.13 7 Lecture StaticOO Inheritance: Introduction V1.Ch14
2006.03.15 7 Lecture StaticOO Inheritance: Substitution principle V1.Ch14
2006.03.17 7 Lecture StaticOO Inheritance: Substitution principle (cont) V1.Ch14
2006.03.20 8 Lecture StaticOO Inheritance: Access control: public, protected, private V1.Ch14
2006.03.22 8 Lecture DynamicOO Inheritance: Virtual functions V1.Ch15
2006.03.24 8 Lecture DynamicOO Inheritance: Overriding vs overloading V1.Ch15
2006.03.27 9 Lecture DynamicOO Inheritance: Abstract base classes, ex1, ex2, ex3, ex4 V1.Ch15
2006.03.29 9 Lecture StaticOO The "this" pointer V1.Ch4
2006.03.31 9 Lecture StaticOO Inheritance: Public, private, protected inheritance V1.Ch14
2006.04.03 10 Lecture SwEngr Namespaces V1.Ch10
2006.04.05 10 Holiday Ching Ming Festival
2006.04.07 10 Exam No lecture: Midterm (LTA 19:00-21:00; sample exam for your practice)
2006.04.10 11 Lecture Generic Introduction to generic programming V1.Ch16
2006.04.12 11 Lecture Generic Function and class templates V1.Ch16
2006.04.14 11 Holiday Mid-Semester Break
2006.04.17 11 Holiday Mid-Semester Break
2006.04.19 11 Holiday Mid-Semester Break
2006.04.21 11 Lecture Generic Overloading operators V1.Ch12
2006.04.24 12 Lecture Generic Container classes V2.Ch7
2006.04.26 12 Lecture Generic STL: Sequences & Iterators V2.Ch6
2006.04.28 12 Lecture Generic STL: Sequences & Iterators (cont'd) V2.Ch6 A1 due
2006.05.01 13 Holiday Labor Day
2006.05.03 13 Lecture Generic STL: Introduction to algorithms V2.Ch6
2006.05.05 13 Holiday The Birthday of the Buddha
2006.05.08 14 Lecture Generic STL: Function pointers V2.Ch6, ref V1.Ch3
2006.05.09 14 A2 due
2006.05.10 14 Lecture Generic STL: Function objects or functors V2.Ch6
2006.05.12 14 Lecture Generic STL: More algorithms V2.Ch6
2006.05.15 15 Lecture SwEngr Static V1.Ch2
2006.05.17 15 Lecture SwEngr Exceptions V2.Ch1
2006.05.22 15 A3 due
2006.05.30 16 Exam Final (12:30-15:30, LG4204; sample final exam plus a sample midterm and another sample midterm for your practice)


dekai@cs.ust.hk
Last update: 2006.06.07