Course Information
Lecture: TTh 12:30-2:20pm, Room 2406 (Lifts 17-18)
Lab: Th 2:30-4:20pm, Room 4210 (Lift 19)Instructor: Gary Chan, Room 3507 (Lifts 25-26), Department of Computer Science and Engineering
Email: gchan@cse.ust.hk
Office hours: By appointmentTAs:
AU Ka Wai David (kwau@cse.ust.hk)
HE Suining Henry (sheaa@cse.ust.hk)
TAN Jiajie (jtanad@cse.ust.hk)
TA office hours:
Monday, 10:30am - 12:30pm, Room 2606 (lifts 29/30), Jiajie Tan
Wednesday, 4:30-6:30pm, Room 3664 (lifts 31/32), David Au
Friday, 1:30-3:30pm, Room 2606 (lifts 29/30), Henry He
Useful Links
- Grade checking
- CASS (Course Assignments Submission System) for submission of assignments and labs
- Academic integrity and Honor code and a framework on academic integrity
- Making this course an enjoyable learning experience
- Thinking in C++ (A good on-line C++ textbook. The website is not always up)
- Reference websites
- C++ reference website
- Standard template library programmer's guide
- Stack overflow (if you hit problems in coding)
- Visual C++ tutorial (Put "C++" at end of your word search for C++-related result)
- Deitel C++ programming resource center
- Animation applets
- Binary and AVL tree demo
- Hash applet
- Sorting algorithms
Lecture Schedule
Note: N - Nyhoff 2nd edition, D - Deitel 6th edition, M - Main
Week | Date | Topics (with video links) | PA/WA [Responsible TA] | Course Slides | Code Examples |
---|---|---|---|---|---|
1
|
1/9/15 | Course introduction/ "Hello world!" program
|
PA policies | 1. Course intro |
|
3/9/15 | Special holiday Makeup lectures: 2-6pm, Room 2405 (17/18) |
2.
C++ overview |
|||
2 | 8/9/15 | (Tutorial lecture) C++ variables and operators |
|||
10/9/15
|
(Tutorial lecture) Flow control: if and swtich statements |
|
3. Flow control |
||
3 | 15/9/15 | Loop: for, while, and break/ Array
|
4. Array | ||
17/9/15
|
Function stack and pass by value |
5.
Functions and file I/O file I/O reference |
|||
4 | 22/9/15 | Pass by reference and variable scope
|
|||
24/9/15 | Recursion
|
PA1 due [Henry He] (Top coders in the class) | |||
5 | 29/9/15 | File I/O/ Pointer concept
|
6.
Pointer
|
||
1/10/15 | National holiday
|
||||
6 | 6/10/15
|
Pointer and array/ Dynamic memory allocation
|
|
||
8/10/15 | Struct/ OOP paradigm and class
|
PA2 due [Jiajie Tan] (Top coders in the class) | 7.
OOP and classes |
Codes |
|
7 | 13/10/15 | Information hiding and constructor/ Separate compilation
|
|
||
15/10/15 | Mid-term break (1-2:30pm office hours)
|
||||
Midterm:
10:30am-12:00pm, LTE, Saturday, 17/10/2015 (mt,
sol) |
|||||
8 | 20/10/15 | A Time
class constructor example; Time
class operator overloading/ Destructor;
|
|
||
22/10/15 | Other issues: returning a reference and this pointer; Class implemention of
array-based list
|
PA3 due
[David Au] (Top coders in the class)
|
8.
Lists,
stacks and queues
|
Codes |
|
9 | 27/10/15 | Linked list; Stack and Queue
|
|||
29/10/15 |
Queue applications in binsort and radix sort/
Function overloading and operator overloading
|
9. Overloading and
template
|
Codes |
||
30/10/15 |
Makeup lecture, 3:00-7:00pm, LT-H |
||||
10 | 3/11/15 |
(Full video lecture) String and data examples/ Function and class templates
|
|||
5/11/15 |
(Full vieo lecture) STL: vector and list
|
PA4 due [Jiajie Tan] (Top coders in the class) |
10. Standard Template Library
(STL)
vector reference
|
Codes | |
11 | 10/11/15 | Deque and String STL/ Types of inheritance | 11.
Inheritance and
Polymorphism
|
Codes
|
|
12/11/15 | Inheritance examples (need some little more time)/ Polymorphism (static binding) |
|
|||
12 | 17/11/15 |
Dynamic binding and examples/ Binary tree and traversal
|
12. Binary Search Trees | Codes | |
19/11/15 |
Binary search tree operations
|
PA5 due
[David Au] (Top coders in the class) |
|||
13 | 24/11/15 |
Tree balancing and AVL tree/ Hashing concept
|
|
13.
Hashing
|
|
26/11/15 | Linear probing and separate chaining/ Review
|
WA due
(to the collection box by Room 4210, Lift 19) [Henry He] (Sol) |
|||
1-19/ 12/15 | TA office hours as usual I will have office hours TTh 1:30-2:30pm (Dec 3, 8, 10, 15 and 17) Final examination, 12:30-3:30pm, Room 4619 (Lifts 31/32), Friday, December 18, 2015
|
Labs [Responsible TA]
If you cannot finish the lab in your lab session, you may submit it through CASS by 7pm Friday that week to the corresponding lab directory.
- (3/9/15) Special holiday
- (10/9/15) Software Development Environment with Eclipse
[Jiajie Tan]
- Basic Linux/Unix commands (Compliment of Prof. A. Horner)
- Remote login using SSH
- Eclipse and emacs setup
- Downloads
- (17/9/15) Flow control [David Au]
- (24/9/15) Array lab [Henry He]
- (1/10/15) National holiday
- (8/10/15) Linked list and file I/O [Henry He]
- (15/10/15) Separate Compilation [Jiajie Tan]
- (22/10/15) Class Construction and Initialization [David Au]
- (29/10/15) Pointers and Linked Lists as class objects [Jiajie Tan]
- (5/11/15) Operator Overloading [David Au]
- (12/11/15) Standard Template Library (STL) [Henry He]
- (19/11/15) Virtual Functions [David Au]
- (26/11/15) Binary Search Trees [Henry He]
- Bonus [Henry He] (no lab, submit any time by 7pm November 30, 2015, to the corresponding lab directory):
Learning Outcomes
On successful completion of this course, students are expected to be able to:
- Understand that recursive and non-recursive functions are abstractions of sub-problems in a task.
- Describe the concept and know how to use pointers in indirect addressing and dynamic memory allocation.
- Understand and know how to implement a few simple data structures as abstract data type in an OOP language such as stacks, lists, queues, binary tree, and hash table.
- Understand and implement generic programming using OOP in terms of function overloading, operator overloading, function and class templates.
- Understand and implement inheritance and polymorphism using static binding, dynamic binding, and virtual functions.
- Understand and be able to implement searching and hashing algorithms using data structures or STL (standard template library).
- Write a program of fewer than a thousand lines of OOP codes to solve simple to medium problems with classes.
- Use common software tools to develop and debug a program written in an OOP language.
- Develop programs using separate compilation and/or STL.