![]() |
|
|
![]() |
|
|
![]() |
|
![]() |
||
![]() |
||
![]() |
||
![]() |
||
![]() |
| Section | Date and Time | Room / Zoom Link | Instructor |
|---|---|---|---|
| L1 | Tue & Thu 09:00AM - 10:50AM | Mixed-mode Lite: Rm 2405, Lift 17-18 / Zoom Meeting Link | TSOI, Desmond Yau Chat |
| Section | Date and Time | Room / Zoom Link | Teaching Assistant | Student Helper |
|---|---|---|---|---|
| LA1 | Wed 03:00PM - 04:50PM | Zoom Meeting Link | CHIU Ho Tin, PANG Hong Wing, TIAN Yao | DINH, Anh Dung |
| LA2 | This session will have no scheduled meetings. You will be provided with access to video-on-demand recordings of the weekly lab material which you will follow at your own pace. | |||
| Item | Percentage |
|---|---|
| Programming assignment - PA1 | 8% |
| Programming assignment - PA2 | 8% |
| Programming assignment - PA3 | 8% |
| Programming assignment - PA4 | 8% |
| Programming project - PP | 24% |
| Laboratory exercises | 8% |
| Final examination | 36% |
Please check your own marks from the CANVAS system.
|
Course Learning Outcome |
Exemplary |
Competent |
Needs Work |
Unsatisfactory |
|---|---|---|---|---|
|
1. Use common software tools to develop and debug a program written in an OOP language. |
Use an IDE such as VS Code proficiently to write, compile, run, and debug a C++ program consisting of one or many source files. |
Use an IDE such as VS Code effectively to write, compile, run, and debug a C++ program consisting of one or many source files. |
Use an IDE such as VS Code to write, compile, and run a C++ program consisting of one source file. Have difficulty in dealing with programs consisting of more than one source file as well as debugging. |
Have difficulty in using an IDE such as VS Code to write, compile, run, and debug a C++ program consisting of one source file without guidance. |
|
2. Demonstrate that recursive and non-recursive functions are abstractions of sub-problems in a task. |
Demonstrate thorough understanding of how recursion works. Be able to develop a recursive solution to a written problem on one's own, and sometimes contrast it with the corresponding non-recursive solution. |
Demonstrate sufficient understanding of how recursion works. Be able to develop a recursive solution to a written problem if given the recursive algorithm, and sometimes contrast it with the corresponding non-recursive solution. |
Demonstrate insufficient understanding of how recursion works. Be able to develop recursive solutions only to some simple problems, and only if the recursive algorithm is given. Cannot contrast the recursive solution with the corresponding non-recursive solution. |
Is unable to understand how recursion works. Is unable to develop recursive solutions to problems even if the recursive algorithm is given. |
|
3. Describe the concept and the use of pointers in indirect addressing and dynamic memory allocation. |
Demonstrate strong understanding of the concept of pointers. Is able to use pointers effectively in indirect addressing and dynamic memory allocation in a great variety of scenarios. |
Demonstrate sufficient understanding of the concept of pointers. Is able use pointers effectively in indirect addressing and dynamic memory allocation in standard scenarios. |
Demonstrate marginal understanding of the concept of pointers. Is able to use pointers in indirect addressing and dynamic memory allocation only in simple scenarios. |
Demonstrate little understanding of the concept of pointers. Have great difficulty in using pointers in indirect addressing and dynamic memory allocation even in simple scenarios. |
|
4. Write object-oriented programs in C++ with object creation, destruction, member variables and functions, inheritance, polymorphism, and templates. |
Demonstrates a comprehensive grasp of object-oriented concepts and fully demonstrates how to write object-oriented programs in C++. |
Demonstrates a thorough grasp of object-oriented concepts and mostly demonstrates how to write object-oriented programs in C++. |
Demonstrates a basic grasp of object-oriented concepts and barely able to demonstrate how to write object-oriented programs in C++. |
Demonstrates a lack of grasp of object-oriented concepts and fail to demonstrate how to write object-oriented programs in C++. |
|
5. Analyze a program and provide simple solutions with OOP. |
Demonstrates an exemplary ability to analyze programs written in OOP. |
Demonstrates a proficient ability to analyze programs written in OOP. |
Demonstrates a developing ability to analyze programs written in OOP. |
Demonstrates deficiencies in their ability to analyze programs written in OOP. |
|
6. Write basic algorithms associated with data structures such as stacks, queues, lists, trees, and hashes. |
Demonstrates ability to fully implement algorithms with common data structures. |
Demonstrates sufficient ability to implement algorithms with common data structures. |
Demonstrates preliminary understanding of how to write algorithms with common data structures. |
Demonstrates a lack of understanding of how to write algorithms with common data structures. |
|
7. Define binary tree and search tree and describe how they are used to solve problems. |
Demonstrates complete understanding of binary tree / binary search tree and is able to accurately describe how they are used to solve problems. |
Demonstrates sufficient understanding of binary tree / binary search tree and successfully describe how they are used to solve problems. |
Demonstrates preliminary understanding of binary tree / binary search tree and barely able to describe how they are used to solve problems. |
Demonstrates deficient understanding of binary tree / binary search tree and unable to describe how they are used to solve problems. |
|
8. Develop a large program using separate compilation, good OOP design, and code reuse. |
Demonstrates complete comprehension of OOP concepts and techniques for the development of large programs. |
Demonstrates basic comprehension of OOP concepts and techniques for the development of large programs. |
Demonstrates minimal comprehension of OOP concepts and techniques for the development of large programs. |
Demonstrates no comprehension of OOP concepts and techniques for the development of large programs. |
![]() |
TSOI, Desmond Yau Chat Rm 3553 desmond@ust.hk http://www.cse.ust.hk/~desmond Office Hour: To be confirmed Find me by PathAdvisor: Click Here |
![]() |
CHIU, Ho Tin Rm 3543 kelvinchiu@cse.ust.hk Office Hour: Lab time or by email appointment Find me by PathAdvisor Click Here |
|
![]() |
PANG, Hong Wing Rm 4223 hwpang@connect.ust.hk Office Hour: Lab time or by email appointment Find me by PathAdvisor Click Here |
|
![]() |
TIAN, Yao None ytianbc@connect.ust.hk Office Hour: Lab time or by appointment |
The schedule listed below is tentative. Instructor may have some adjustments subject to the progress.
| Week# | Topics | Download | Reading | Code / Additional Materials |
|---|---|---|---|---|
| 1 | Course Logistics | Full / 4-page | ||
| 1 | Introduction | Full / 4-page | Deitel - Chapter 1 | |
| 1 | Fundamentals of C++ | Full / 4-page | Deitel - Chapter 2 | |
| 1 | Program Flow Control | Full / 4-page | Deitel - Chapter 4 & 5 | |
| 2 | Function | Full / 4-page | Deitel - Chapter 6 (except 6.12, 6.17 - 6.21) | |
| 2 | Array | Full / 4-page | Deitel - Chapter 8.5 | |
| 2 | Recursion | Full / 4-page | Deitel - Chapter 6.18 - 6.20 | |
| 3 | Structure | Full / 4-page | Deitel - Chapter 22.2 | |
| 3 | Pointer | Full / 4-page | Deitel - Chapter 8 | |
| 4 | Linked List | Full / 4-page | Deitel - Chapter 19.3 | |
| - | Separate Compilation (Function) (Self-study) | Full / 4-Page | Programs |
| Week# | Topics | Download | Reading | Code / Additional Materials |
|---|---|---|---|---|
| 5 | Class and Object | Full / 4-page | Deitel: Chap 3 | Programs |
| 6 | Constructors & Destructor | Full / 4-Page | Deitel: Chap 9 | Programs |
| 7 | Inheritance and Polymorphism | Full / 4-Page | Deitel: Chap 11, 12 | Programs |
| 9 | Generic Programming | Full / 4-Page | Deitel: Chap 18, 19, 10 | Programs |
| 10 | Standard Template Library (STL) | Full / 4-Page | Weiss: Chap 9.14 | Programs |
| - | Static Data Members and Member Functions | Full / 4-Page | Weiss: Chap 9.14 | Programs |
| - | File I/O (Self-study) | Full / 4-Page | Deitel: Chap 14.1 - 14.4 | Programs |
| - | C++ string class (Self-study) | Full / 4-Page | Deitel: Chap 21 | Programs |
| - | Namespace (Self-study) | Full / 4-Page | Deitel: Chap 23.4 | Programs |
| - | Some New Features in C++11 | Full / 4-Page | Deitel: Chap 4.11.7, 7.5, 16.3, 9.6.2, 10.13 | Programs |
| - | rvalue Reference and Move Semantics | Full / 4-Page | Deitel: (Web) Chap 24 | Programs |
| Week# | Topics | Download | Reading | Code / Additional Materials |
|---|---|---|---|---|
| 11 | Stack and Queue | Full / 4-Page | Weiss: Chap 3.6 - 3.7 | Programs |
| 11 - 12 | Trees, Binary Trees, and Binary Search Trees | Full / 4-Page> | Weiss: Chap 4.1 - 4.3 | Programs |
| 13 | Hashing | Full / 4-Page | Weiss: Chap 5 | |
| - | AVL Trees | Full / 4-Page | Weiss: Chap 4.4 | Programs |
The lecture classes this semester will be conducted in mixed-mode lite. The link for the meetings is available under the "Schedule" section of this page and at the Canvas page of the course here. Before you join a meeting for the first time, visit this page and sign in to Zoom using your HKUST e-mail, as our lecture meetings will require HKUST user authentication. When attending a lecture meeting,
Zoom lecture videos will be published on the supplementary website (https://www.cse.ust.hk/~desmond/comp2012h/Password_Only/) after each lecture class depending on when they become available.
Honesty and integrity are central to academic work. You must observe and uphold the highest standards of academic integrity and honesty in all the work (lab exercises, programming assignments, quiz, exams, etc.) you do in this course. We deal with cheating cases seriously and the maximum penalty is a FAIL in the course plus additional disciplinary actions from the CSE Department as well as from the University. Both the copier(s) and the copiee will be punished, and the penalty will be more than just a zero mark in your assignments/exams.
Here are links to the University's Honor code, and the University's Penalties for Cheating.
If you are not sure what is considered plagiarism,We will use VS Code as the development platform for C++ programming. Please read the following tutorial which will help you get started:
Labs this semester will only be conducted online via Zoom meetings.
Note to all students:
The lab exercises are designed to help you learn a (new) programming language with on-the-spot advices of a teaching assistant. All the TAs assigned to the course are very experienced in C++ programming. It is more a service to you than an exercise for the marks. The 8% mark is only set to encourage you to make good use of the lab time.
Although we don't expect you to finish the lab exercise before you attend the lab, we expect you to have
read the lab's materials and understand what you are required to do.
[Public holiday exception]
If a day is a public holiday, students are not required
to attend the labs held on that day. There will be no points for these labs
for only those students who originally are supposed to attend these labs;
other students are not affected. As different students may be affected by
different public holidays, the final total lab points will be normalized
according to the number of labs a student has to take. However, although a
student may not need to attend a lab on a day that happens to be a public
holiday, we strongly encourage the student to still go over the materials
of that lab and try to finish it. Labs help students review what they are
taught in lectures and get ready for the next lab.
This policy will also apply to situations when classes/labs are cancelled
due to, e.g., adverse weather conditions, etc.
| Date | Topic | Solution | Common errors |
|---|---|---|---|
| September 1 & 8 | No lab in the first two weeks. Lab time will be used to conduct review classes. For details, please refer to the announcement section. | ||
| September 15 | Lab 1 - VS Code, Fundamentals of C++, and Program Flow Control | lab1_solution.cpp | |
| September 29 | Lab 2 - Functions and Arrays | lab2_solution.cpp | |
| October 8 | Lab 3 - Structures, Pointers & Dynamic Memory Allocation of Arrays | lab3_solution.zip | |
| October 15 | Lab 4 - Linked List | lab4_solution.zip | |
| October 22 | Lab 5 - Class, Object, Constructors and Destructor | lab5_solution.zip | |
| November 1 | Lab 6 - Inheritance | lab6_solution.zip | |
| --- | Supplementary Lab - GUI Programming using Qt | supp_lab_solution.zip | Common Errors |
| November 8 | Lab 7 - Generic Programming | lab7_solution.zip | |
| November 15 | Lab 8 - Standard Template Library and Binary Search Tree | lab8_solution.zip | |
| Topic | Instructor / TA-in-charge | Solution |
|---|---|---|
| Programming Assignment 1: Tile-Matching Game | PANG, Hong Wing (hwpang@connect.ust.hk) | Grading Scheme & Appeal Procedure |
| Programming Assignment 2: Gitlite | Kelvin CHIU (kelvinchiu@cse.ust.hk) | Grading Scheme & Appeal Procedure |
| Programming Assignment 3: SimpleCity | Kelvin CHIU (kelvinchiu@cse.ust.hk) | Grading Scheme & Appeal Procedure |
| Programming Assignment 4: SimpleCity GUI | Kelvin CHIU (kelvinchiu@cse.ust.hk) | |
| Project: Demonstrate your Programming Skills and Creativity | TSOI, Desmond (desmond@ust.hk) |
| COMP 2011 | COMP 2012 | ||||
|---|---|---|---|---|---|
| Mid-Term Exams | Final Exams | Mid-Term Exams | Final Exams | ||
| 2018F | Not Available | Not Available | 2018F | Question I | Question II | Solution | Question I | Question II | Solution |
| 2018S | No Midterm | Question | Solution | 2018S | Question | Solution> | Question | Solution |
| 2017F | Question | Solution> | Question | Solution | 2017F | Question | Solution> | Question | Solution |
| 2017S | Question | Solution> | Question | Solution | 2017S | Question | Solution> | Question | Solution |
| COMP 2012H | ||
|---|---|---|
| Mid-Term Exams | Final Exams | |
| 2020F | No Midterm Exam | Question | Solution |
| 2019F | Question | Solution | No Final Exam |
| 2018F | Question I | Question II | Solution | Question I | Question II | Solution |
We use VS Code to write C++ codes in this course. VS Code provides an Integrated Development Environment (IDE) that allows developers to write, build, and debug C++ programs.