Undergraduate Courses 2023-24
COMP
Computer Science and Engineering
a) Undergraduate courses marked with [BLD] or [SPO] may be offered in the mode of blended learning or self-paced online delivery respectively, subject to different offerings. Students should check the delivery mode of the class section before registration.
b) Undergraduate courses marked with [EXP] may adopt the approach of experiential learning subject to different offerings. Students should check the delivery mode of the class section before registration.
- COMP 1001Exploring Multimedia and Internet Computing3 Credit(s)Previous Course Code(s)CORE 1231Prerequisite(s)a passing letter grade in LANG 1401 OR LANG 1402 OR LANG 1403 OR LANG 1404 OR LANG 1002 (prior to 2022-23)Exclusion(s)ISOM 2010, any COMP courses of 2000-level or aboveMode of Delivery[BLD] Blended learningDescriptionThe course introduces the organization and basic working mechanism of a computer system, including the development of the trend of modern computer system. It covers the fundamentals of computer hardware design and software application development. The course emphasizes the application of the state-of-the-art software tools to solve problems and present solutions via a range of skills related to multimedia and internet computing tools such as internet, e-mail, WWW, webpage design, computer animation, spread sheet charts/figures, presentations with graphics and animations, etc. The course also covers business, accessibility, and relevant security issues in the use of computers and Internet.
- COMP 1021Introduction to Computer Science3 Credit(s)Exclusion(s)COMP 1022P, COMP 1022Q (prior to 2020-21), COMP 2011, COMP 2012HDescriptionThis course introduces students to the world of Computer Science. Students will experience a range of fun and interesting areas from the world of computing, such as game programming, web programming, user interface design and computer graphics. These will be explored largely by programming in the Python language.
- COMP 1022PIntroduction to Computing with Java3 Credit(s)Exclusion(s)COMP 1021, COMP 1022Q (prior to 2020-21), COMP 2011, COMP 2012H, ISOM 3320Mode of Delivery[SPO] Self-paced online delivery
[BLD] Blended learningDescriptionThis course is designed to equip students with the fundamental concepts of programming elements and data abstraction using Java. Students will learn how to write procedural programs using variables, arrays, control statements, loops, recursion, data abstraction and objects using an integrated development environment. - COMP 1029CC Programming Bridging Course1 Credit(s)Prerequisite(s)COMP 1021 OR COMP 1022P OR COMP 1022Q (prior to 2020-21) OR ISOM 3230 OR ISOM 3320Exclusion(s)COMP 2011, COMP 2012HDescriptionThis course introduces the C programming language. It is intended for students who already have some experience in computer programming but wish to learn how to apply those programming skills to the C language. The course covers basic programming topics, such as variables, control, loops, and functions, to more advanced topics. Students explore these by self-learning of course materials together with guided programming exercises. Students without the prerequisites but possess relevant programming knowledge may seek instructor's approval for enrolling in the course. Graded P or F.
- COMP 1029JJava Programming Bridging Course1 Credit(s)Prerequisite(s)COMP 1021 OR COMP 1022Q (prior to 2020-21) OR ISOM 3230Exclusion(s)COMP 1022P, COMP 3021, ISOM 3320DescriptionThis course introduces the Java programming language. It is intended for students who already have some experience in computer programming but wish to learn how to apply those programming skills to the Java language. The course covers basic programming topics such as variables, control statements, loops, functions, and object-oriented programming concepts. Students explore these by self-learning of course materials together with guided programming exercises. Students without the prerequisites but possess relevant programming knowledge may seek instructor's approval for enrolling in the course. Graded P or F.
- COMP 1029PPython Programming Bridging Course1 Credit(s)Prerequisite(s)COMP 1022P OR COMP 1022Q (prior to 2020-21) OR ISOM 3230 OR ISOM 3320Exclusion(s)COMP 1021DescriptionThis course introduces the Python programming language. It is intended for students who already have some experience in computer programming but wish to learn how to apply those programming skills to the Python language. The course covers basic programming topics, such as variables, functions and loops, to more advanced topics. Students explore these by self-learning of course materials together with guided programming exercises. Students without the prerequisites but possess relevant programming knowledge may seek instructor's approval for enrolling in the course. Graded P or F.
- COMP 1029VExcel VBA Programming Bridging Course1 Credit(s)Prerequisite(s)COMP 1021 OR COMP 1022P OR ISOM 3320Exclusion(s)COMP 1022Q (prior to 2020-21), ISOM 3230DescriptionThis course introduces the VBA programming language, in the context of Microsoft Excel. It is intended for students who already have some experience in computer programming but wish to learn how to apply those programming skills to VBA, within Excel. The course covers basic programming topics, such as variables, functions and loops, to more advanced topics. Appropriate features of the Excel program are also covered. Students explore these by self-learning of course materials together with guided programming exercises. Students without the prerequisites but possess relevant programming knowledge may seek instructor's approval for enrolling in the course. Graded P or F.
- COMP 1942Exploring and Visualizing Data3 Credit(s)Previous Course Code(s)CORE 1232Prerequisite(s)a passing letter grade in LANG 1401 OR LANG 1402 OR LANG 1403 OR LANG 1404 OR LANG 1002 (prior to 2022-23)Exclusion(s)COMP 4331, ISOM 3360, RMBI 4310DescriptionThis course teaches concepts and tools for exploring and visualizing data. There are a lot of real-life decision-making problems (e.g., business, logistics, economics, marketing, finance, resource management, forecasting and engineering) which can be formulated using some existing data analysis models. Existing computer science tools such as Microsoft Excel can help us to model and solve these problems easily, and to visualize the solutions.
- COMP 1943Creative Sound and Video Design3 Credit(s)Previous Course Code(s)CORE 1233Prerequisite(s)a passing letter grade in LANG 1401 OR LANG 1402 OR LANG 1403 OR LANG 1404 OR LANG 1002 (prior to 2022-23)Mode of Delivery[EXP] Experiential learningDescriptionThis experiential project course will provide hands-on experiences in creating music videos and movie/game trailers by creatively remixing music, recutting video, and applying effects. It will provide a creative outlet where students can apply their problem-solving skills in a deep and engaging way to create music remixes, mashups, character videos, and reimagined video stories. It will also give students a chance to work with emerging video technologies. Whether students have music and video editing background or not, this course will provide them a chance to create like a sound designer, video editor, and director. For each of their music video creations, students will also create a behind the-scenes commentary video that describes what they did and how they did it. They will share their creations and commentaries in class, and learn from and be inspired by one another.
- COMP 1944Artificial Intelligence Ethics3 Credit(s)Previous Course Code(s)COMP 4901M, CORE 1234Prerequisite(s)a passing letter grade in LANG 1401 OR LANG 1402 OR LANG 1403 OR LANG 1404 OR LANG 1002 (prior to 2022-23)DescriptionArtificial intelligence (AI) is disrupting every sphere of our work and lives, bringing unprecedented risks to society. This introductory course surveys the explosive area of AI ethics, illuminating relevant AI concepts with no prior background needed. Fake news bots. AI driven social media displacing traditional journalism. Drone warfare. Elimination of traditional jobs. Privacy‐violating advertising. Monopolistic network effects. Biased AI decision/recognition algorithms. Deepfakes. Autonomous vehicles. Automated hedge fund trading. No area remains untouched. Policy think tanks, governments, and tech companies around the world have started paying serious attention to AI ethics. How will human civilization survive the rise of AI? What are the new rules? What are the ethical frameworks needed to avoid extinction? What are engineers’ and entrepreneurs’ ethical responsibilities?
- COMP 1991Industrial Experience0 Credit(s)DescriptionFull-time internship training for a period of at least six weeks in an organization or company recognized by the Department for providing qualified internship training relevant to the computer science and engineering profession. Cantonese or other working languages may be used in off-campus trainings and internships, in some situations. For students of the Department of Computer Science and Engineering in their second year of study or above only. Internship coordinator's approval is required for enrollment in the course. Graded P, PP or F.
- COMP 2011Programming with C++4 Credit(s)Prerequisite(s)COMP 1021 OR COMP 1022P OR COMP 1022Q (prior to 2020-21) OR ISOM 3230Exclusion(s)COMP 2012HDescriptionThis course covers programming and data structures using C++. In addition to basic programming concepts such as variables and control statements, students will learn about arrays, pointers, dynamic data allocation, linked lists, stacks, queues, binary trees, recursion, and the basics of object oriented programming.
- COMP 2012Object-Oriented Programming and Data Structures4 Credit(s)Prerequisite(s)COMP 2011Exclusion(s)COMP 2012HDescriptionTo learn the fundamental concepts and techniques behind object-oriented programming. They include: abstract data types; creation, initialization, and destruction of objects; class hierarchies; polymorphism, inheritance and dynamic binding; generic programming using templates. To learn the object-oriented view of data structures: linked lists, stacks, queues, binary trees, and algorithms such as searching and hashing.
- COMP 2012HHonors Object-Oriented Programming and Data Structures5 Credit(s)Prerequisite(s)Grade A or above in COMP 1021 / COMP 1022P / COMP 1022Q (prior to 2020-21) / ISOM 3230Exclusion(s)COMP 2011, COMP 2012DescriptionThis course is an accelerated and intensive course on concepts and techniques behind object-oriented programming (OOP) and data structures using an OOP language. It covers the major materials of COMP2011 and COMP2012, and its curriculum is designed for students with excellent programming background or substantial programming experience. Topics include: functions; pointers; abstract data types and their class implementation; static and dynamic construction and destruction of objects; data member and member functions; public interface and encapsulation; class hierarchies; polymorphism; inheritance and dynamic binding; standard template library; generic programming using templates; object-oriented view of data structures: linked lists, queues, stacks, trees, and their algorithms such as searching, sorting and hashing.
- COMP 2211Exploring Artificial Intelligence3 Credit(s)Prerequisite(s)COMP 1021 OR COMP 1029PExclusion(s)COMP 3211, COMP 4211, COMP 4221, COMP 4331, COMP 4332, COMP 4421, COMP 4471, COMP 4901K, COMP 4901L, ELEC 4130, ELEC 4230, EMIA 4110, ISOM 3360, MATH 4336, MATH 4432, RMBI 4310, COMP 5211, COMP 5212, COMP 5213, COMP 5221, COMP 5222, COMP 5215, COMP 5331, COMP 5421DescriptionThis course aims to give a gentle introduction to the basic elements of artificial intelligence (AI) through understanding examples from various applications and hands-on experimentation using AI software tools. In addition to covering the technical aspect of AI through such topics as search and problem solving, knowledge representation, probabilistic reasoning, machine learning, computer vision and image processing, speech and language processing, and robotics, this course will also study the historical perspective, social and ethical implications, as well as potential and limitations of AI.
- COMP 2611Computer Organization4 Credit(s)Prerequisite(s)COMP 2011 OR COMP 2012HExclusion(s)ELEC 2300, ELEC 2350DescriptionInner workings of modern digital computer systems and tradeoffs at the hardware-software interface. Topics include: instructions set design, memory systems, input-output systems, interrupts and exceptions, pipelining, performance and cost analysis, assembly language programming, and a survey of advanced architectures.
- COMP 2633Competitive Programming in Cybersecurity I0 Credit(s)Previous Course Code(s)COMP 4901NExclusion(s)COMP 3633, COMP 4633DescriptionCyber-attacks mounted by malicious attackers have been creating significant damage to various companies and individuals around the globe in the recent years; cybersecurity is now a high priority consideration for the major businesses worldwide. To deepen the practical knowledge in fighting against the cybersecurity threats, cybersecurity competitions are being organized every year by various institutions and organizations. This course prepares interested students with the practical knowledge for taking part in cybersecurity contests. The course will be offered as a 0-credit course in the Fall semester. Enrolled students will learn the common topics in the first 5 weeks of the Fall, getting trained in fundamental knowledge of cybersecurity. Then they will divide into two tracks in the remainder of the Fall. One track will be concentrating on topics like binary analysis, reverse engineering, the other track will be concentrating on topics like web exploitation, cryptography, computer forensics, and other miscellaneous topics. Graded P or F.
- COMP 2711Discrete Mathematical Tools for Computer Science4 Credit(s)Prerequisite(s)Level 3 or above in HKDSE Mathematics Extended Module M1/M2Corequisite(s)(For students without prerequisites) MATH 1012 OR MATH 1013 OR MATH 1014 OR MATH 1020 OR MATH 1023 OR MATH 1024Exclusion(s)COMP 2711H, MATH 2343DescriptionBasic concepts in discrete mathematics needed for the study of computer science: enumeration techniques, basic number theory, logic and proofs, recursion and recurrences, probability theory and graph theory. The approach of this course is specifically computer science application oriented.
- COMP 2711HHonors Discrete Mathematical Tools for Computer Science4 Credit(s)Prerequisite(s)Level 5* or above in HKDSE Mathematics Extended Module M1/M2; OR grade A- or above in MATH 1014; OR grade B+ or above in MATH 1020 / MATH 1024Exclusion(s)COMP 2711, MATH 2343DescriptionDiscrete mathematics needed for the study of computer science: sets, functions; propositional logic, predicate logic, rules of inference, proof techniques; pigeonhole principle, basic and generalized permutations and combinations, binomial coefficients, inclusion-exclusion principle; probability theory, Bayes theorem, expectation, variance, random variables, hashing; cryptography and modular arithmetic, Euclid’s division theorem, multiplicative inverse, divisibility, RSA cryptosystem, Chinese remainder theorem; mathematical induction, strong induction and well-ordering property, recursion, recurrence relations; graph representation, isomorphism, connectivity, Euler paths, Hamilton paths, planarity, graph coloring. Gentle introduction to many discrete mathematical concepts that will appear later in more advanced computer science courses.
- COMP 3021Java Programming3 Credit(s)Prerequisite(s)COMP 2012 OR COMP 2012HExclusion(s)ISOM 3320DescriptionIntroduction to Java programming. Fundamentals include language syntax, object-oriented programming, inheritance, polymorphism, exception handling, multithreading and lambdas. Standard libraries for input/output, graphics programming, built-in data structures. Programming for events, generics and higher-order functions.
- COMP 3031Principles of Programming Languages3 Credit(s)Prerequisite(s)COMP 2012 OR COMP 2012HDescriptionComparative studies of programming languages, programming language concepts and constructs. Non-imperative programming paradigms: object-oriented, functional, logic, concurrent programming. Basic concepts of program translation and interpretation. Storage allocation and run-time organization.
- COMP 3071Honors Competitive Programming2 Credit(s)DescriptionIntensive programming laboratory to equip students with creative problem solving and competitive programming skills. International programming competition-type problems will be used to motivate the study of algorithms, programming, and other topics in computer science. Enrollment in the course requires approval of the course instructor.
- COMP 3111Software Engineering4 Credit(s)Co-list withCOMP 3111HPrerequisite(s)COMP 2012 OR COMP 2012HExclusion(s)COMP 3111H, ISOM 3210Mode of Delivery[BLD] Blended learningDescriptionMethods and tools for planning, designing, implementing, validating, and maintaining large software systems. Project work to build a software system as a team, using appropriate software engineering tools and techniques.
- COMP 3111HHonors Software Engineering4 Credit(s)Co-list withCOMP 3111Prerequisite(s)Grade A- or above in COMP 2012 / COMP 2012HExclusion(s)COMP 3111, ISOM 3210DescriptionGeneral methodologies, techniques, and tools for planning, designing, implementing, validating, and maintaining large-scale software systems. Collaborative development environment, automatic static analysis, and testing techniques. Open source project development methodologies and techniques.
- COMP 3211Fundamentals of Artificial Intelligence3 Credit(s)Prerequisite(s)COMP 2011 OR COMP 2012 OR COMP 2012HExclusion(s)COMP 5211DescriptionFoundations underlying design of intelligent systems. Relations between logical, statistical, cognitive, biological paradigms; basic techniques for heuristic search, theorem proving, knowledge representation, adaptation; applications in vision, language, planning, expert systems.
- COMP 3311Database Management Systems3 Credit(s)Prerequisite(s)COMP 2011 OR COMP 2012 OR COMP 2012HExclusion(s)COMP 5311, IEDA 3300, ISOM 3260DescriptionPrinciples of database systems; conceptual modeling and data models; logical and physical database design; query languages and query processing; database services including concurrency, crash recovery, security and integrity. Hands-on DBMS experience.
- COMP 3511Operating Systems3 Credit(s)Prerequisite(s)COMP 2611 OR [(ELEC 2300 OR ELEC 2350) AND (COMP 2011 OR COMP 2012H)]DescriptionPrinciples, purpose and structure of operating systems; processes, threads, and multi-threaded programming; CPU scheduling; synchronization, mutual exclusion; memory management and virtual memory; device management; file systems, security and protection.
- COMP 3632Principles of Cybersecurity3 Credit(s)Prerequisite(s)COMP 2012 OR COMP 2012HDescriptionThis course is an introduction to the principles of cybersecurity. Cybersecurity, also called computer security or IT security, refers to the study of techniques to protect computing systems from attacks that threaten data confidentiality, system integrity and availability. By modeling, analyzing, and evaluating the security of computer systems, students will learn to find weaknesses in software, hardware, networks, data storage systems, mobile applications, and the Internet, and identify current security practices and defenses to protect these systems.
- COMP 3633Competitive Programming in Cybersecurity II2 Credit(s)Previous Course Code(s)COMP 4901OPrerequisite(s)COMP 2633Exclusion(s)COMP 4633DescriptionThe course will be offered as an 2-credit course in the Spring semester. Students who have passed COMP2633 and have gotten the instructor consent can join this course, they will be working together based on the knowledge they have learned from COMP2633 and this course, forming teams to further investigate various advanced topics related to the more practical side of cybersecurity. They will then join the various cybersecurity competitions. The students will get 2 credits for successfully completing this course. Contest-type “attack and defend” programming problems (also known as Capture-The-Flag, CTF, problems) will be employed throughout this course to practically train the students for the cybersecurity contests. The topics covered will include but not limited to binary analysis, cryptography, web exploitations, and packet capture analysis. These topics will be covered in the practical attack-and-defend context. Recent developments in the topics will also be investigated by students via CTF problem solving. Instructor's approval is required.
- COMP 3711Design and Analysis of Algorithms3 Credit(s)Prerequisite(s)(COMP 2011 OR COMP 2012 OR COMP 2012H) AND (COMP 2711 OR COMP 2711H OR MATH 2343)Exclusion(s)COMP 3711HDescriptionTechniques for designing algorithms, proving their correctness, and analyzing their running times. Topics covered include: sorting, selection, heaps, balanced search trees, divide-and-conquer, greedy algorithms, dynamic programming, and graph algorithms.
- COMP 3711HHonors Design and Analysis of Algorithms4 Credit(s)Prerequisite(s)(Grade B+ or above in COMP 2011 / COMP 2012 / COMP 2012H) AND (grade A- or above in COMP 2711 / COMP 2711H / MATH 2343)Exclusion(s)COMP 3711DescriptionTechniques for designing algorithms, proving their correctness, and analyzing their running times. Topics covered include: sorting, selection, heaps, balanced search trees, divide-and-conquer, greedy algorithms, dynamic programming, and graph algorithms. The class will also provide an introduction to advanced techniques such as amortized analysis and the design of randomized and approximation algorithms, as well as providing exposure to more advanced algorithmic solutions to optimization problems, e.g. linear programming and network flow.
- COMP 3721Theory of Computation3 Credit(s)Prerequisite(s)(COMP 3711 OR COMP 3711H) AND (MATH 2111 OR MATH 2121 OR MATH 2131 OR MATH 2350)DescriptionThis course is an introduction to the foundation of computation. Topics covered include set theory and countability, formal languages, finite automata and regular languages, pushdown automata and context-free languages, Turing machines, undecidability, P and NP, NP completeness.
- COMP 4021Internet Computing3 Credit(s)Prerequisite(s)COMP 2012 OR COMP 2012HDescriptionTechnologies and standards for World Wide Web (WWW), user interfaces and Browsers, authoring tools, Internet protocols, Internet servers, database connectivity, Robots, Search engines, server-side programming, client-side programming, security and privacy, recent advances.
- COMP 4111Software Engineering Practices3 Credit(s)Prerequisite(s)COMP 3111 OR COMP 3111HDescriptionThis course provides students with the exposure of effective real-world software engineering practices and the underlying concepts via working around a realistic modern software system and applying popular tools and practices in industry. Students will gain experience in collaborative software development as well as the skills required to succeed as software professional. Topics of the course cover advanced software engineering concepts, project setup, code management, testing, defect analysis, quality metrics, and issue management. For students of the Department of Computer Science and Engineering only.
- COMP 4121Modern Compiler Construction3 Credit(s)Previous Course Code(s)COMP 4901UPrerequisite(s)COMP 3021 OR COMP 3031DescriptionCompiler implementation techniques are relevant to a wide array of software engineering areas. From parsing ad-hoc configuration file formats to validating complex specification languages to generating efficient code solving data-intensive problems at scale, many important problems of today and tomorrow require knowledge of basic compiler technology. The course exposes students to the essentials of modern compiler construction, including parsing, semantic analysis, program transformation, and code generation. Students will learn to design and implement their own programming language and extend it with a feature of their choice in a small team project. The course focuses on achieving these goals through effective high-level programming techniques, whose mastery will also make students a better programmer in general.
- COMP 4211Machine Learning3 Credit(s)Prerequisite(s)(COMP 2012 OR COMP 2012H) AND (ELEC 2600 OR IEDA 2520 OR IEDA 2540 OR ISOM 2500 OR LIFS 3150 OR MATH 2411 OR MATH 2421 OR MATH 2431)Exclusion(s)COMP 4331, COMP 5212, ISOM 3360DescriptionFundamentals of machine learning. Concept learning. Evaluating hypotheses. Supervised learning, unsupervised learning and reinforcement learning. Bayesian learning. Ensemble Methods. Deep learning.
- COMP 4221Introduction to Natural Language Processing3 Credit(s)Prerequisite(s)ELEC 2600 OR IEDA 2520 OR IEDA 2540 OR MATH 2411 OR MATH 2421 OR MATH 2431Exclusion(s)COMP 5221DescriptionHuman language technology for text and spoken language. Machine learning, syntactic parsing, semantic interpretation, and context-based approaches to machine translation, text mining, and web search.
- COMP 4222Machine Learning with Structured Data3 Credit(s)Previous Course Code(s)COMP 4901KPrerequisite(s)(COMP 2011 OR COMP 2012 OR COMP 2012H) AND (COMP 2711 OR COMP 2711H OR MATH 2343) AND (MATH 2111 OR MATH 2121 OR MATH 2131)Exclusion(s)MATH 4632DescriptionThis course provides an introduction to statistical machine learning algorithms for structured data such as text sequences, taxonomy trees, relational databases (such as knowledge bases), and graphs (including graph databases such as biomedical graphs and large heterogeneous information networks such as knowledge graphs), and using programming tools such as Python to implement them for real problems. It will use some of the following practical problems such as text and graph classification, statistical relational learning, information extraction, sequence modeling, graph modeling, protein 3D structure prediction, QA system, etc. as illustrations to demonstrate the power of the statistical learning algorithms.
- COMP 4321Search Engines for Web and Enterprise Data3 Credit(s)Prerequisite(s)COMP 2011 OR COMP 2012 OR COMP 2012HMode of Delivery[SPO] Self-paced online deliveryDescriptionText retrieval models, vector space model, document ranking, performance evaluation; indexing, pattern matching, relevance feedback, clustering; web search engines, authority-based ranking; enterprise data management, content creation, meta data, taxonomy, ontology; semantic web, digital libraries and knowledge management applications.
- COMP 4331Data Mining3 Credit(s)Prerequisite(s)ELEC 2600 OR IEDA 2520 OR IEDA 2540 OR ISOM 2500 OR LIFS 3150 OR MATH 2411 OR MATH 2421 OR MATH 2431Exclusion(s)COMP 4211, ISOM 3360DescriptionThis course will provide an introduction to concepts and techniques in the field of data mining. Materials include an introduction to data warehousing and OLAP, data preprocessing and the techniques used to explore the large quantities of data for the discovery of predictive models and knowledge. The course will include techniques such as nearest neighbor, decision tress, neural networks, Bayesian networks and Naive Bayes, rule-based methods, association analysis and clustering, as well as social networks and data mining applications in business and finance applications, and other emerging data mining subareas. Students learn the materials by attending lectures and implementing and applying different data analysis and mining techniques to large datasets throughout the semester.
- COMP 4332Big Data Mining and Management3 Credit(s)Co-list withRMBI 4310Prerequisite(s)COMP 4211 OR COMP 4331 OR ISOM 3360DescriptionThis course will expose students to new and practical issues of real world mining and managing big data. Data mining and management is to effectively support storage, retrieval, and extracting implicit, previously unknown, and potentially useful knowledge from data. This course will place emphasis on two parts. The first part is big data issues such as mining and managing on distributed data, sampling on big data and using some cloud computing techniques on big data. The second part is applications of the techniques learnt on areas such as business intelligence, science and engineering, which aims to uncover facts and patterns in large volumes of data for decision support. This course builds on basic knowledge gained in the introductory data-mining course, and explores how to more effectively mine and manage large volumes of real-world data and to tap into large quantities of data. Working on real world data sets, students will experience all steps of a data-mining and management project, beginning with problem definition and data selection, and continuing through data management, data exploration, data transformation, sampling, portioning, modeling, and assessment.
- COMP 4411Computer Graphics3 Credit(s)Prerequisite(s)COMP 3711 OR COMP 3711HDescriptionDisplay technologies; scan conversion; clipping; affine transformations; homogeneous coordinates and projection; viewing transformations; hidden surface removal; reflectance and shading models; ray tracing; spline curves and surfaces; hierarchical modeling; texture mapping; color models.
- COMP 4421Image Processing3 Credit(s)Prerequisite(s)(COMP 2011 OR COMP 2012 OR COMP 2012H) AND (MATH 2011 OR MATH 2111 OR MATH 2121 OR MATH 2131 OR MATH 2350 OR MATH 2351 OR MATH 2352)Exclusion(s)ELEC 4130, MATH 4336DescriptionIntroduction to image processing. Topics include image processing and analysis in spatial and frequency domains, image restoration and compression, image segmentation and registration, morphological image processing, representation and description, object recognition, related application areas and some other closely related topics. Some sophisticated image processing and analysis tools and state-of-the-art methods may also be introduced subject to the availability of time.
- COMP 4431Multimedia Computing3 Credit(s)Prerequisite(s)COMP 2012 OR COMP 2012HMode of Delivery[BLD] Blended learningDescriptionColor theory; digital audio, image and video fundamentals, representation, and processing; digital multimedia applications and programming.
- COMP 4441Music Video Creation3 Credit(s)Prerequisite(s)COMP 2011 OR COMP 2012 OR COMP 2012HMode of Delivery[EXP] Experiential learningDescriptionThis experiential project-oriented music and video technology course will provide hands-on experiences in creating music videos and movie/game trailers by creatively remixing music, recutting video, and applying effects such as time and frequency distortion, time warping, reverse, filtering, and phasing. Students will create music remixes, music/video/actor mashups, and plot twists in their music video storytelling. It will give students a chance to work with emerging video technologies such as deepfakes. Whether students have music or video background or not, this course will provide them a chance to create like a sound designer and director. For each of their music video creations, students will also create a behind-the-scenes commentary video that describes what they did and how they did it. They will share their creations and commentaries in class, and learn from and be inspired by one another.
- COMP 4451Game Programming3 Credit(s)Corequisite(s)COMP 4411DescriptionComputer game development touches on many facets of computer science, including computer graphics, artificial intelligence, algorithms, networking, human-computer interaction, music, and sound. This course will cover all of these aspects, with special emphasis on real-time graphics rendering. Students will get hands-on experience on how to design and implement real-world computer games, which will help improve their skills in programming, teamwork, management, and communication.
- COMP 4461Human-Computer Interaction3 Credit(s)Prerequisite(s)COMP 2011DescriptionThis course is a broad introduction to Human-Computer Interaction (HCI), with an emphasis on techniques, models, theories, and applications for designing, prototyping, and evaluating current and future interactive systems for human use. HCI is an interesting and important area of study, providing the human perspective to computing. Besides technology and innovation, it also touches on issues like ethics and social responsibilities related to technologies in the real world. Selected topics include multimodal interaction design, usability evaluation, computer-supported cooperative work, assistive technologies, social computing, crowd computing, ubiquitous/mobile computing, virtual/augmented reality and gaming, agents and robots, and HCI applications in various domains such as education, health, urban sustainability, scientific discoveries, etc.
- COMP 4462Data Visualization3 Credit(s)Prerequisite(s)COMP 2011DescriptionThis course will introduce visualization techniques for data from everyday life, social media, business, scientific computing, medical imaging, etc. The topics include human visual system and perception, visual design principles, open- source visualization tools and systems, visualization techniques for CT/MRI data, computational fluid dynamics, graphs and networks, time-series data, text and documents, Twitter data, and spatio-temporal data. The labs and the course project will give students hands-on experience to turn their data into beautiful visualizations.
- COMP 4471Deep Learning in Computer Vision3 Credit(s)Previous Course Code(s)COMP 4901JAlternate code(s)ELEC 4240Prerequisite(s)(COMP 2011 OR COMP 2012 OR COMP 2012H) AND (MATH 2111 OR MATH 2121 OR MATH 2131 OR MATH 2350)DescriptionDeep learning has significantly advanced the performance of computer vision system from object recognition to image processing. This course covers the basics and various applications of deep learning in computer vision. Students will study the details of convolutional neural networks as well as recurrent neural networks and train deep networks with end-to-end optimization, and learn deep learning based approaches for both high-level and low-level computer vision tasks such as image recognition and image enhancement. Through programming projects, students will implement, train, and test deep neural networks on cutting-edge computer vision research. Students would be required to study or do research in a final course project related to deep learning and computer vision and present their work by the end of the course.
- COMP 4511System and Kernel Programming in Linux3 Credit(s)Prerequisite(s)COMP 3511Corequisite(s)COMP 4621 OR ELEC 3120DescriptionThis course is designed to equip students, who have a particular interest in becoming practitioners, with substantial hands-on experience in solving concrete problems in a computer operating system, via programming, in a laboratory intensive course. Students will notably experiment with many topics in the areas of operating systems and network protocols, such as: boot loaders, shell, process management, system calls, process scheduler, file system, virtual memory, network protocols and packet filtering, system modules and device drivers. For students of the Department of Computer Science and Engineering only.
- COMP 4521Mobile Application Development3 Credit(s)Prerequisite(s)(COMP 2611 OR ELEC 2300 OR ELEC 2350) AND COMP 3511DescriptionPrinciples of application development for mobile and embedded devices. Mobile software development environments and software architectures. Features of typical mobile platforms: user-interface and user-experience design, multimedia, 2D and 3D graphics and data storage support, networking, location and mapping services. Design patterns and application frameworks. Mobile back-end support. Web applications. Students need to design and implement a full-fledged mobile application.
- COMP 4531IoT and Smart Sensing3 Credit(s)Previous Course Code(s)COMP 4901SPrerequisite(s)COMP 1021 OR COMP 1022P OR COMP 2011 OR COMP 2012HDescriptionThis course introduces the spectrum of research on the Internet of Things (IoT) and smart sensing. The lectures cover a range of techniques in sensing, computing, communication, and wireless networking and connect them to various applications in analytics, localization, cyber-physical systems, mobile health, security, and wearables.
- COMP 4541Blockchain, Cryptocurrencies and Smart Contracts3 Credit(s)Previous Course Code(s)COMP 4901WPrerequisite(s)COMP 2012 OR COMP 2012HDescriptionThis course provides a holistic introduction to the world of Blockchain Protocols and Smart Contracts. You will learn how cryptocurrencies such as Bitcoin and Ethereum work, why they are secure, and how you can use them to develop smart contracts. You will also learn to detect and avoid common security vulnerabilities in smart contracts. This is a very hands-on and project-based course. The course covers the following topics: basics of cryptography, the double-spending problem in decentralized currencies, Proof-of-work and its alternatives, programmable blockchains and smart contracts, auctions and escrows, common smart contract vulnerabilities, and tools for verifying the correctness of a smart contract.
- COMP 4611Design and Analysis of Computer Architectures3 Credit(s)Prerequisite(s)COMP 2611 OR ELEC 2300 OR ELEC 2350DescriptionAnalysis, synthesis and evaluation of different computer architectures. Emphasis on computer design with respect to price/performance and its relation to architectural choices such as pipelining, memory hierarchy, input/output, instruction set design, vector processing, and multiprocessing.
- COMP 4621Computer and Communication Networks3 Credit(s)Prerequisite(s)COMP 2611 OR [(ELEC 2300 OR ELEC 2350) AND (COMP 2011 OR COMP 2012H)]Exclusion(s)COMP 5621, ELEC 3120, ISOM 3180BackgroundProbability and statisticsDescriptionPrinciples of computer network architectures and communication protocols; the OSI reference model; switching and multiplexing techniques; data link, network, transport and application layers; LAN and medium access protocols; network programming.
- COMP 4631Computer and Communication Security3 Credit(s)Prerequisite(s)COMP 2711 OR COMP 2711HExclusion(s)COMP 5631DescriptionConventional and public-key cryptosystems, hash algorithms, digital signature, authentication, identification, access control, distributed system security, network security, web security, Unix security, firewalls, email security, secure shell, virtual private networks.
- COMP 4632Practicing Cybersecurity: Attacks and Counter-measures3 Credit(s)Prerequisite(s)COMP 2012 OR COMP 2012HCorequisite(s)COMP 3511DescriptionThis course equips students with cybersecurity knowledge and current IT practices on security risk management. Through hands-on laboratory sessions, students will understand existing IT security issues, learn how to assess IT security risks, and conduct experiments on ethical hacking. They will practice system attack and defense strategies using security tools, so as to gain practical experience to become a cybersecurity professional. The course covers current security trends, industrial practices on IT security, design requirements for secure web and mobile applications, security assessment, risk analysis and risk management. Knowledge in web programming and database administration is not essential but a plus.
- COMP 4633Competitive Programming in Cybersecurity III2 Credit(s)Previous Course Code(s)COMP 4901PPrerequisite(s)COMP 3633DescriptionThe course will be offered as a 2-credit course in the Fall semester. A proportion of senior student members who have finished COMP3633 in a previous Spring semester could join the course in the Fall semester after getting instructor consent. They will further enhance their leadership and practical knowledge by taking part in the experience sharing and training of the freshly joined COMP2633 students. The students will get 2 credits for successfully completing COMP4633. Instructor's approval is required.
- COMP 4641Social Information Network Analysis and Engineering3 Credit(s)Prerequisite(s)(COMP 2011 OR COMP 2012H) AND MATH 2111 AND (ELEC 2600 OR IEDA 2520 OR IEDA 2540 OR MATH 2411 OR MATH 2421 OR MATH 2431)DescriptionThis course is an introduction to social information network analysis and engineering. Students will learn both mathematical and programming knowledge for analyzing the structures and dynamics of typical social information networks (e.g. Facebook, Twitter, and MSN). They will also learn how social metrics can be used to improve computer system design as people are the networks. It will cover topics such as small world phenomenon; contagion, tipping and influence in networks; models of network formation and evolution; the web graph and PageRank; social graphs and community detection; measuring centrality; greedy routing and navigations in networks; introduction to game theory and strategic behavior; social engineering; and principles of computer system design. Students who do not have the prerequisites but with equivalent background may seek approval from the instructor for enrollment in the course.
- COMP 4651Cloud Computing and Big Data Systems3 Credit(s)Prerequisite(s)COMP 2011 OR COMP 2012HDescriptionBig data systems, including Cloud Computing and parallel data processing frameworks, emerge as enabling technologies in managing and mining the massive amount of data across hundreds or even thousands of commodity servers in datacenters. This course exposes students to both the theory and hands-on experience of this new technology. The course will cover the following topics. (1) Basic concepts of Cloud Computing and production Cloud services; (2) MapReduce - the de facto datacenter-scale programming abstraction - and its open source implementation of Hadoop. (3) Apache Spark - a new generation parallel processing framework - and its infrastructure, programming model, cluster deployment, tuning and debugging, as well as a number of specialized data processing systems built on top of Spark. By walking through a number of hands-on labs and assignments, students are expected to gain first-hand experience programming on real world clusters in production datacenters.
- COMP 4900Academic and Professional Development0 Credit(s)DescriptionThis course is for academic and professional development of students in the programs offered by the Department of Computer Science and Engineering. Activities may include seminars, workshops, advising and sharing sessions, interaction with faculty and teaching staff, and discussion with student peers or alumni. Graded P/PP/F.
- COMP 4901Special Topics in Computer Science0-4 Credit(s)DescriptionSelected topics of current interest to the Department not covered by existing courses. Offerings are announced each semester. May be graded by letter, P/F, or DI/PA/F for different offerings.
- COMP 4910Co-op Program6 Credit(s)Exclusion(s)COMP 4981, COMP 4981HDescriptionStudents in this co-op program will be engaged in practical hands-on training for a period of at least 5 months working in an organization or company that provides qualified training relevant to the computer engineering profession. Students are required to complete a final year project under the supervision of an industrial supervisor and a faculty member during the co-op. May be graded PP. For COMP and COSC students in their third or fourth year of study only. Approval of the course coordinator is required for enrollment in the course.
- COMP 4911IT Entrepreneurship3 Credit(s)Alternate code(s)ENTR 4911Prerequisite(s)COMP 1021 OR COMP 1022P OR COMP 1022Q OR COMP 2011 OR COMP 2012H OR ISOM 3230DescriptionBasic elements of starting a new business in information technology; exploiting an "unfair" advantage; preparing a business plan; arranging financial support; accounting and legal requirements; exit strategy. Case studies of successful and failed ventures in Hong Kong and elsewhere.
- COMP 4971Independent Work1-4 Credit(s)DescriptionIndependent studies or projects under the directed guidance of a faculty member on a computer science topic. A written report, presentation, and/or an examination are required. Enrollment in the course requires prior approval of the course instructor, and credits assigned depend on the workload. May be repeated for credits.
- COMP 4981Final Year Project6 Credit(s)Exclusion(s)COMP 4981HDescriptionStudents are expected to complete a project in an area of specialization in Computer Science and Engineering under the guidance of a faculty member. Objectives are to integrate the classroom material from several courses, and to apply them to solve practical problems. Credit load will be spread over the year. For students in the BEng in Computer Science and BEng in Computer Engineering programs under the four-year degree only.
- COMP 4981HFinal Year Thesis6 Credit(s)Exclusion(s)COMP 4981DescriptionStudents are expected to conduct research under the supervision of a faculty member, summarize their work in an individual thesis and make a defense at the end. Credit load will be spread over the year. For students in the BEng in Computer Science and BEng in Computer Engineering programs under the four-year degree only. Instructor's approval is required for enrollment in the course.