Departmental Courses: Reviews by Students (+ extra information, e.g. relevant online resources)

Please add and review courses you have taken -- you can add anonymous reviews (if you wish to hide your identity), or you can sign with your CS account id (so, other students can get in touch with you to ask about a particular course more).

COMP9301 Systems Design and Implementation

  • (2013/14 session, taught by Prof C.-L. Wang): The course taught us about “all-time classic” important systems papers and system design philosophies from 1960s to 1980s (THE, Hydra, End-to-End, Locality, UNIX) -- some of their ideas are still valid, so worth knowing them more, especially if you do systems research. Then, we discussed some hot research topics in systems -- this part was assessed and each topic was presented by a group of students (each student had to present in 3 chosen topics). Other assessments were an open-book exam (covering both “classic” and “hot” topics with one short question section and choose 4 out of 8 longer question section where you could choose 2 to “take-home”) and a “project” which was reduced to a discussion/presentation about a system you or your research group developed with respect to things taught in this course. Although this session was a bit disorganized, it’s a good course and I’d recommend it (unless you do purely theoretical research). --ttauber

  • (2012/13 session, taught by Prof. Francis C. M. Lau): The course covers quite a lot of classical system design issues, from 1) UNIX principle as one could imagine in a system course, 2) THE, the first multi-user OS, 3) to more updated contents like hadoop and ARC. The course has 3 elements, 1) a take home midterm which is more open-ended, 2) a group project, and 3) a public paper review (reviewing yet unpublished paper). It’s a good course in which it provides you with a lot of basic elements in system research, it’s also a good course which provides you with fundamental research skills (review a paper). The experience is especially valuable when few individuals would pick the same paper and they will praise or criticise completely the different way. The schedule is tight, Prof. Lau tried to give everything until the very last weeks when he has to let you time to do the public critique but very organised. --chdhung

COMP9601 Theory of Computation and Algorithms Design

  • (2014/15 session, taught by Prof Tak-Wah Lam): This is an interesting yet challenging course. The course material consists of two parts: 1) the first part including topics of theory of computation, i.e. DFA, NFA, Pushdown Automata, Turing Machine, Decidability, Space Complexity, Reduction, NP Problems, etc 2) the second part is more fun, including topics of online algorithms, i.e. Suffix tree, Suffix array, Paging algorithms, Job scheduling, etc. The course assessment includes 4 assignments (which are quite hard, 50%) and final exam (which is a lot easier than assignments, 50%). Prof. Lam’s teaching is very clear and engaging. He is very approachable and ready to help students with any questions. If you are interested in the theories of computer science, solving hard yet interesting problems, I highly recommend taking this course! --xbi

  • (2014/15 session, taught by Prof Tak-Wah Lam): I disagree with the other review’s verdict that the exam was a lot easier; I think the exam was similarly hard to the assignments. I agree with the rest, but not sure whether I would highly recommend this course to everyone -- if you are a CS theory student and/or have some computability, complexity, and decidability background, then yes, I recommend it. If not, then it depends on your interest (you will probably not learn much you could directly apply in your own research) and on your other workload (such as teaching or other courses), because it could be quite overwhelming. If you decide to take this course and you are not a CS theory expert, I recommend implementing the algorithms from the course (that are unknown to you) in your favorite programming language for better understanding. Also, for the second part of the course, there are not many good study resources apart from research papers. For string algorithms, I recommend this book: http://ebooks.cambridge.org/ebook.jsf?bid=CBO9780511574931 (which is also listed in the course info). I did not find the listed books for scheduling and competitiveness analysis very useful, so in there, your best resource is the research papers.

COMP9602 Convex Optimization

to refresh linear algebra: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/

  • (2014/15 session, taught by Dr. Chuan Wu): This course is related to mathematical theories, especially the field of mathematical optimization. The textbook and course materials are basically based on the popular namesake course by Stanford. Linear Algebra is a necessary prerequisite for the course. It will be better if you are familiar with theories of probability and statistics, and basic graph algorithms. The course covers most essential contents of convex optimizations, introduced in two main parts: the mathematical foundation and the application. The mathematical background includes convex sets, convex functions, convex programs and Lagrangian duality. The application contains the gradient descent method, Newton’s method, interior-point method, subgradient method and composition method, etc. Frankly speaking, the workload is somewhat heavy (compared to other COMP9-courses): 3 assignments (36%), 1 final exam (40%) and 1 project (24%). Each of assignments took me at least 3 hours to finish. The last assignment requires coding. And the project requires to submit a report. But I think without doing such practice it is impossible to obtain deep understanding of concepts and methods. (Stanford’s course has much more workload than this course.) Most importantly, the lecturer, Dr. Wu, is very helpful and patient even if you have forgotten all the basic math knowledge learned in undergraduate: matrix, rank, norm, eigenvalue, normal distribution, covariant, etc. (Review them if you really have no idea.) She is very approachable and always tries her best to explain the concepts from scratch. Any time if you feel confused with the proofs or concepts, she will draw figures on the whiteboard to help you understand in an intuitive way. So I think there is no need to worry about passing the course. After one semester’s rigorous mathematical training, your skills will improve a lot and feel easier to read research papers that use convex optimization. --yangyp

COMP9603 Bioinformatics Algorithms

  • (2013/14 session, taught by Prof Tak-Wah Lam): This course is more related to theory. The course material is often dry. Topics includes Sequence similarity, Multiple sequence alignment, Database alignment, Genome Indexing, Phylogenetic trees comparison, Phylogenetic trees reconstruction, Genome rearrangement, RNA secondary structure prediction are Genome assembly. Professor Lam gives very understandable lectures about these topics. If you are interested in Bioinformatics, this course is a good choice. There are four assignments during the semester. The assignments can help students to better understand the algorithms and how to extend and apply algorithms. TA will select the best three of your four assignments. You can also give presentation about a bioinformatics topic to replace assignments.

COMP8101 Advanced Topics in Data Engineering

please add information if you took this course

COMP8502 Advanced Topics in Pattern Recognition

Other resources for machine learning: https://www.coursera.org/course/ml

http://work.caltech.edu/telecourse.html

http://www.youtube.com/user/mathematicalmonk

  • (2013/14 session, taught by Prof Yizhou Yu): In the first part, the course introduced some basic concepts in pattern recognition / machine learning. The lecturer presented it in a fairly dry fashion, mostly just reading off things from borrowed PowerPoint slides. That does not sound good in combination with morning time and compulsory attendance which accounted for 10% assessment (on the other hand, there is no exam). In the second part, pairs of students presented their selected papers from a pre-selected list which was assessed. Pre-selected papers were mostly about computer vision… so, good if you do research in it, otherwise… maybe interesting to know what is going on elsewhere. The last assessment was a group project where you can select your own project given it involves machine learning -- since ML is used in almost every field, you can take this opportunity to try to implement some paper you read. There are better resources to learn about ML online, so I’d recommend this course only to people who do research in computer vision, cannot choose from other courses (workload for this one was not too high, so you can focus more on your research) or would like to do a short research ML side-project for fun (and assessment in this course). --ttauber

COMP8504 Geometric Modeling and Computing

please add information if you took this course

COMP8601 Advanced Topics in Theoretical Computer Science

please add information if you took this course

COMP 8603 Probabilistic Method and Randomized Algorithms

  • (2017/18 session, taught by Dr Hubert Chen): Quite hard if you are not in algorithms group or good at probability theory. It is very closed related to Dr Chen’s research area which is more about probability theory than traditional algorithms. Most students are from the algorithm group as well. The teaching style is not bad. The structure is clear. Every lecture comes with a lecture note so you don’t have to take much notes. In the class the lecturer use his surfacepad to demonstrate how to reason and calculate. It is like a math class where the key is to understand and follow the lecturer. Really good if you are a fan of the area. Or you may find it boring and too hard to follow. The exam is open book, if I remember it correctly. But you are only allowed to take handwritten notes(?). Before the exam there is a quiz on class which you can do with your group partener. None of them is easy, including the homework. But if you does spend much time on it, I don’t think you will fail. --xjhuang

MSc Courses

As a part of the compulsory coursework, you can take some MSc courses (e.g. to replace one 8xxx with two 7xxx) -- please check your exact coursework requirements and discuss with your supervisor though.

For “reviews”, you can get results of previous years’ feedback forms (only numbers) on the MSc portal: https://msccs.cs.hku.hk

COMP7305 Cluster and Cloud Computing

Similar, but “less systems-oriented” course: http://www.inf.ed.ac.uk/teaching/courses/exc/

  • (2013/14 session, taught by Prof C.-L. Wang): This is a fun course (but has a fairly heavy load for its TAs). The course material is often dry and contains a lot of OS-level systems details (so, if you do not have some background in Operating Systems and Computer Architecture, you may feel lost). The assessment is an exam (where you can bring 1 sheet of paper with notes) and two assignments which are a lot of fun: the 1st one was basically Amazon EC2 tutorial (and we got USD100 AWS credit this year), the 2nd one was about building our own cluster from 3 assigned computers for each group and deploying an application on it (either existing or custom built). If you want to brush up your Linux system administration skills and play with Xen, Hadoop, MPI etc., I’d recommend this course. --ttauber

COMP7103 Data Mining

  • (2013/14 session, taught by Prof Ben Kao): This a basic course about data mining. It introduces basic data mining methods for large scale data. It teaches how to preprocess data and postprocess data results. Prof Ben Kao is an attractive teacher. He always shows examples related to the lectures. This course is not difficult for students with no data mining background. The assessment of the course includes two assignments (40%), midterm quiz(10%), final examination(50%). The final examination requires time for preparation. Because the course includes numerous knowledge about data mining. It is kind of hard to remember all the things. If you want to understand the data mining, it is good to this course.

COMP7802 Introduction to Financial Computing

  • (2013/14 session, taught by Mr. Peter T.L. Ng): This course is more related to financial part. There is not much CS knowledge. This course is to introduce the financial mathematics concepts, financial product pricing basics and modern risk management in practice. I recommend this course to students who like financial knowledge. This course does not require any prior knowledge in the area of finance. Basic calculus and numeric computational techniques are useful. The course assessment includes two assignments and a project. There is no final exam here. If students learn earnestly, it is not hard for students to pass the course.

COMP7306 Web Technologies

  • (2013/14 session, taught by Dr. C.K. Chui): Unless you do Web / DB-related research, this course may only be relevant to you that you can brush up your HTML/CSS skills for your academic website / CV. It teaches about XML (and related standards: XSD, DTD, XSLT, …), service oriented architecture (SOAP, WSDL, WS-BPEL), AJAX as well as some more advanced topics that tend to change a bit every year, such as collaborative filtering, semantic web or cloud computing, Some parts of the course may have been boring, other parts were quite interesting, especially the invited guest (one HK entrepreneur) lecture about the future of the web. The course had three straightforward assignments (XML/XSD/XSLT/CSS exercise where you write your CV, PHP/SQL/JS workshop exercises, and a 1000-word essay about Web 3.0), midterm and final exams. I would recommend this course if you like to focus more on your research, because the lecturer is young, very open, did his PhD at HKU and is well aware of the workload HKU CS research students have here (e.g. if you know you have a paper deadline coming, you can feel free to contact him to discuss special arrangements for the assignments, such as a deadline extension). --ttauber

Last updated