Undergraduate Courses 2025-26
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 1231Exclusion(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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Identify the organization, basic working mechanism, and latest trend of modern computer systems
- 2.Recall the design principles and procedure of software application development
- 3.Recognize the social and philosophical impacts of computers and internet to human society
- 4.Apply integrated knowledge on state-of-the-art software to solve problems and present solutions via websites, surveys, documents, spreadsheets, presentations, etc
- 5.Search information efficiently from internet and share with others
- 6.Identify security issues in internet and protect personal information
- COMP 1021Introduction to Computer Science3 Credit(s)Exclusion(s)COMP 1022P, COMP 1023, COMP 2011, COMP 2012H, ISOM 3400DescriptionThis 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Take a "real-life" problem and abstract out the pertinent aspects necessary to solve it
- 2.Formulate formal solutions to well-posed problems using the logic of a programming language
- 3.Implement formal solutions in Python
- 4.Have an understanding of many important areas of computation from the Computer Science perspective
- COMP 1022PIntroduction to Computing with Java3 Credit(s)Exclusion(s)COMP 1021, COMP 1023, COMP 2011, COMP 2012H, ISOM 3320Mode of Delivery[BLD] Blended learning
[SPO] Self-paced online deliveryDescriptionThis 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.Intended Learning OutcomesOn successful completion of the course, students will be able to:
- 1.Take a "real-life" problem and abstract out the pertinent aspects necessary to solve it
- 2.Formulate formal solutions to well-posed problems using the logic of a programming language
- 3.Implement formal solutions in Java using an integrated development environment
- 4.Have an understanding of basics of data abstraction using the object-oriented framework
- COMP 1023Introduction to Python Programming3 Credit(s)Exclusion(s)COMP 1021, COMP 1022P, COMP 1029P, ISOM 3400DescriptionThis introductory course is designed to provide a comprehensive overview of the Python programming language and its core concepts, such as data types, variables, operators, and control structures, as well as the collection data types, including lists, tuples, sets, and dictionaries. Additionally, it covers the language's functions and the fundamentals of object-oriented programming. The course also explores a range of useful Python modules and packages, such as NumPy, Pandas, Matplotlib, through meaningful examples and applications, as well as hands-on experimentation using a well-known integrated development environment and AI tools. Furthermore, this course will discuss good programming practices and debugging skills.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Implement solutions to simple problems by writing well-structured Python programs leveraging fundamental programming constructs
- 2.Develop modular, reusable Python programs through the effective use of functions and modules
- 3.Understand the core principles of object-oriented programming to create robust, maintainable Python applications
- 4.Analyze and visualize data using appropriate libraries and tools
- 5.Write Python code that adheres to industry-standard best practices for coding style and documentation
- COMP 1029CC Programming Bridging Course1 Credit(s)Prerequisite(s)COMP 1021 OR COMP 1022P OR COMP 1023 OR ISOM 3230 OR ISOM 3320 OR ISOM 3400Exclusion(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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Define basic programming elements such as variables, control, loops and functions in C.
- 2.Describe data structures and data abstraction in C.
- 3.Implement advanced programming concepts in C.
- 4.Design, write and debug computer programs in C.
- COMP 1029JJava Programming Bridging Course1 Credit(s)Prerequisite(s)COMP 1021 OR COMP 1023 OR ISOM 3230 OR ISOM 3400Exclusion(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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Define basic programming elements such as variables, control, loops and functions in Java.
- 2.Describe object-oriented programming concepts in Java.
- 3.Describe data structures and data abstraction in Java.
- 4.Design, write and debug computer programs in Java.
- COMP 1029PPython Programming Bridging Course1 Credit(s)Prerequisite(s)COMP 1022P OR ISOM 3230 OR ISOM 3320Exclusion(s)COMP 1021, COMP 1023, ISOM 3400DescriptionThis 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Define basic programming elements such as variables, loops and functions in Python.
- 2.Describe data structures and data abstraction in Python.
- 3.Implement advanced programming concepts in Python.
- 4.Design, write and debug computer programs in Python.
- COMP 1029VExcel VBA Programming Bridging Course1 Credit(s)Prerequisite(s)COMP 1021 OR COMP 1022P OR COMP 1023 OR ISOM 3320 OR ISOM 3400Exclusion(s)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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Define basic programming elements such as variables, loops and functions in VBA.
- 2.Describe data structures and data abstraction in VBA.
- 3.Implement advanced programming concepts in VBA.
- 4.Design, write and debug computer programs in VBA.
- COMP 1942Exploring and Visualizing Data3 Credit(s)Previous Course Code(s)CORE 1232Exclusion(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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Identify and explain a variety of data analytic models
- 2.Apply appropriate data analytic models to formulate, analyze and solve problems
- 3.Present results in a layman form
- COMP 1943Creative Sound and Video Design3 Credit(s)Previous Course Code(s)CORE 1233Mode 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Create video and audio mashups by combining video from one source and audio from another to make them work together
- 2.Edit, remix, and apply effects to the music and video
- 3.Refashion music and video sources with plot twisting and movie/actor mashups, and creative storytelling
- 4.Incorporate emerging video technologies in creative music videos and movie trailers
- 5.Create behind-the-scenes director commentary videos that document what students did and how they did it
- COMP 1944Artificial Intelligence Ethics3 Credit(s)Previous Course Code(s)COMP 4901M, CORE 1234DescriptionArtificial 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?Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Compare different frameworks for understanding AI ethics and the misuse of AI technology, including IEEE Ethically Aligned Design
- 2.Contrast deontological (rule-based), consequentialist, and virtue approaches to AI ethics
- 3.Propose designs for embedding values into autonomous systems and artificial moral cognition, particularly with regard to the ethics of emotional AI, empathetic AI, and affective computing
- 4.Analyze the AI and machine learning’s fairness, responsibility and accountability, and evaluate what degree of transparency and explainability is possible
- 5.Analyze how unconscious cognitive biases, mathematical inductive biases, and machine-learned algorithmic biases interact to produce polarizing and discriminatory outcomes
- 6.Analyze the social consequences of alternative approaches of personal data rights and individual access control
- 7.Explain the risks of autonomous weapons, analyze the tradeoffs, and contrast policy proposals
- 8.Analyze AI safety options in the coming eras of strong AI and artificial superintelligence
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Apply knowledge, techniques, skills and tools learned from the program of study to a variety of tasks relevant to the computer science and engineering profession.
- 2.Develop problem solving skills for a wide range of computer science and engineering problems by taking into consideration various real-life constraints.
- 3.Recognition of the operation and requirement of real-life business, leading to understanding of professional, ethical, legal, security and social issues and responsibilities.
- 4.Develop effective interpersonal and teamwork skills.
- 5.Recognition of the need for lifelong learning and continuing professional development.
- COMP 2011Programming with C++4 Credit(s)Prerequisite(s)COMP 1021 OR COMP 1022P 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Use common software tools to develop and debug a program written in an OOP language.
- 2.Write a short program to solve a simple problem in an OOP language.
- 3.Demonstrate that recursive and non-recursive functions are abstractions of sub-problems in a task.
- 4.Describe the concept and the use of pointers in indirect addressing and dynamic memory allocation.
- 5.Demonstrate the use of several data structures.
- 6.Implement an abstract data type by defining a class in an OOP language.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Write object-oriented programs in C++ with object creation, destruction, member variables and functions, inheritance, polymorphisms, and templates.
- 2.Analyze a program and provide simple solutions with OOP.
- 3.Write basic algorithms associated with data structures such as stacks, queues, lists, trees, and hashes.
- 4.Define binary tree and search tree and describe how they are used to solve problems.
- 5.Develop a large program using separate compilation, good OOP design, and code reuse.
- COMP 2012HHonors Object-Oriented Programming and Data Structures5 Credit(s)Prerequisite(s)Grade A or above in COMP 1021 / COMP 1022P / 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Understand that recursive and non-recursive functions are abstractions of sub-problems in a task.
- 2.Describe the concept and know how to use pointers in indirect addressing and dynamic memory allocation.
- 3.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.
- 4.Understand and implement generic programming using OOP in terms of function overloading, operator overloading, function and class templates.
- 5.Understand and implement inheritance and polymorphism using static binding, dynamic binding, and virtual functions.
- 6.Understand and be able to implement searching and hashing algorithms using data structures or STL (standard template library).
- 7.Write a program of fewer than a thousand lines of OOP codes to solve simple to medium problems with classes.
- 8.Use common software tools to develop and debug a program written in an OOP language.
- 9.Develop programs using separate compilation and/or STL.
- COMP 2211Exploring Artificial Intelligence3 Credit(s)Prerequisite(s)COMP 1021 OR COMP 1029PCross-Campus Equivalent CourseAIAA 2211DescriptionThis course provides a gentle introduction to artificial intelligence (AI), and emphasizes hands-on practical experiences with Python and AI software tools to explore AI applications. Interesting applications that have been covered in previous class offerings include, but are not limited to, medical diagnosis, predictions of customer behaviour and user attitudes, character recognition, spam mail detection, text and image classifications and recognitions, sentiment analysis, and retinal vessel segmentation. The course also explores recent advances and discusses the history and ethics of AI. Only for students in their first and second year of study or those with approval from instructor by applying requisite waiver.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Demonstrate general understanding of the historical perspective and development of artificial intelligence (Al)
- 2.Demonstrate fundamental understanding of the basic elements of Al thinking
- 3.Demonstrate proficiency in applying basic principles and techniques of Al and using Al software tools to solve problems in a range of applications
- 4.Demonstrate awareness of the social and ethical implications as well as potential and limitations of Al
- COMP 2611Computer Organization4 Credit(s)Prerequisite(s)COMP 2011 OR COMP 2012HExclusion(s)ELEC 2350Cross-Campus Equivalent CourseMICS 2710DescriptionInner 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Describe the organizational paradigms that determine the capability and performance of computer systems.
- 2.Define the basic concepts of modern computer hardware, including datapath, control, memory and input/output.
- 3.Describe the interaction between software and hardware and instruction set architecture.
- 4.Write and execute small programs of a few hundred lines in assembly language.
- 5.Understand the basic concepts of digital logic and build the small circuits involved in computer systems.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Apply and understand ethical hacking
- 2.Master the basic knowledge required for dealing with cybersecurity threats
- 3.Understand the more advanced knowledge for dealing with cybersecurity threats
- 4.Be familiar with real-world issues related to cybersecurity in various organizations
- 5.Be familiar with the practical skills in fighting against cybersecurity threats
- 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 (prior to 2025-26) 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Understand and use the specific mathematical concepts taught
- 2.Understand and use basic mathematical proof techniques. In particular they will be able to prove new statements not previously taught in class
- 3.Model simple combinatorial and computational problems mathematically
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Describe the formulation of common problems in several areas of discrete mathematics, including combinatorics, number theory and cryptography, logic and proof, recursion and recurrences and probability theory.
- 2.Define the connection between the discrete mathematical tools learned and some core computer science topics covered later in the curriculum, including computational complexity, information security, recursive functions and data structures.
- 3.Apply the mathematical techniques learned to solve problems in a range of topics.
- 4.Demonstrate a level of mathematical maturity by solving problems using an array of different proof techniques.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Develop programs in Java, implementing object-oriented concepts, organizing, compiling and deploying Java program files, programming Java exceptions and defining generic functions and classes.
- 2.Utilize a range of Java programming packages to design and implement multi-threaded applications, graphics, event handlers and functional interfaces.
- 3.Follow good Java programming practices in applying tools to design and implement unit test cases in a unit testing framework and using an integrated development environment for Java application development.Follow good Java programming practices in applying tools to design and implement unit test cases in a unit testing framework and using an integrated development environment for Java application development.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Utilize context-free grammars to identify and define the formal syntax of programming languages.
- 2.Apply general tools such as Bison and Flex to construct a parser for a language defined by a context-free grammar.
- 3.Identify the general constructs and concepts used in implementing programming languages, particularly those in function activation and parameter passing methods.
- 4.Differentiate the alternative programming paradigms of functional and logic programming, and write programs in a language selected from each of the two paradigms (e.g. SML and Prolog).
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Utilize context-free grammars to identify and define the formal syntax of programming languages.
- 2.Apply general tools such as Bison and Flex to construct a parser for a language defined by a context-free grammar.
- 3.Identify the general constructs and concepts used in implementing programming languages, particularly those in function activation and parameter passing methods.
- 4.Differentiate the alternative programming paradigms of functional and logic programming, and write programs in a language selected from each of the two paradigms (e.g. SML and Prolog).
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Apply appropriate modeling techniques to design software for an application of medium complexity: model and document data and processing requirements for an application using a modeling language and implement a disciplined software design for an application.
- 2.Apply appropriate software engineering techniques to implement an application of medium complexity: transform requirements for an application, expressed in a modeling language, into a working software system, select appropriate algorithms to implement the stated requirements and design and implement a variety of tests to validate that a software system meets its stated requirements.
- 3.Function effectively as a member of a software development team: organize, manage and participate in a small software development team and plan and schedule the activities involved in developing the software for a medium-sized application.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Apply appropriate modeling techniques to design software for an application of medium complexity: model and document data and processing requirements for an application using a modeling language and implement a disciplined software design for an application.
- 2.Apply appropriate software engineering techniques to implement an application of medium complexity: transform requirements for an application, expressed in a modeling language, into a working software system, select appropriate algorithms to implement the stated requirements and design and implement a variety of tests to validate that a software system meets its stated requirements.Apply appropriate software engineering techniques to implement an application of medium complexity: transform requirements for an application, expressed in a modeling language, into a working software system, select appropriate algorithms to implement the stated requirements and design and implement a variety of tests to validate that a software system meets its stated requirements.
- 3.Function effectively as a member of a software development team: organize, manage and participate in a small software development team and plan and schedule the activities involved in developing the software for a medium-sized application.
- 4.Manage a software development environment by selecting appropriate software components to implement the stated requirements for a software system and configuring and managing a software development environment.
- COMP 3211Fundamentals of Artificial Intelligence3 Credit(s)Prerequisite(s)(COMP 2012 OR COMP 2012H) AND COMP 2211Exclusion(s)COMP 5211DescriptionThis course provides a comprehensive coverage of the reasoning and decision-making aspects of artificial intelligence (AI). It covers fundamental concepts and techniques of AI, such as search, constraint satisfaction, game theory, game tree search, Markov decision processes, reinforcement learning, multi-agent systems, logic reasoning, and probabilistic reasoning.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Identify the fundamental concepts and techniques of AI: autonomous agents, search, knowledge representation, and machine learning.
- 2.Understand and apply techniques for searching state spaces, including breadth-first, depth-first, best-first, A* search, minmax game tree search, minmax with alpha-beta pruning, and hill-climbing search.
- 3.Appreciate some cutting edge research in AI such as multiagent systems, game theory, ontology, semantic web, big data, deep learning, and others.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Explain important concepts in database management systems, including principles of database systems, conceptual modeling and data models, logical and physical database design, query languages and query processing and database services including concurrency, crash recovery and integrity.
- 2.Apply database theories to practical database applications.
- 3.Analyze a real-life problem, design a database system and implement a computer-based system using a major commercial database management system.
- COMP 3511Operating Systems3 Credit(s)Prerequisite(s)COMP 2611 OR [ELEC 2350 AND (COMP 2011 OR COMP 2012H)]Cross-Campus Equivalent CourseAIAA 3511DescriptionPrinciples, 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Define the fundamental principles, strategies and algorithms used in the design and implementation of operating systems.
- 2.Analyze and evaluate operating system functions.
- 3.Analyze the structure of an operating system kernel, and identify the relationship between the various subsystems.
- 4.Identify the typical events, alerts, and symptoms indicating potential operating system problems.
- 5.Recognize and evaluate the source code of the NACHOS operating system.
- 6.Design and implement programs for basic operating system functions and algorithms.
- COMP 3631Cryptography3 Credit(s)Previous Course Code(s)COMP 4631Prerequisite(s)COMP 2711 OR COMP 2711HExclusion(s)COMP 5631DescriptionThis course is the foundation of cybersecurity and computer security. It covers the following topics: mathematical foundations of cryptography, private-key and public-key ciphers, public key infrastructure, key management, digital signature schemes, authentication protocols, hash functions, keyed hash functions, security services, security tools, cryptographic protocols, cryptographic primitives, secret sharing.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Evaluate potential vulnerabilities and attacks on computer and communication systems.
- 2.Select and apply basic tools to build security 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Apply and understand ethical hacking
- 2.Analyze various computer systems rigorously and identify potential security flaws in the systems
- 3.Understand the current trends in the development of cybersecurity protection measures in the industry
- 4.Acquire leadership through team-working in taking part in the cybersecurity contests
- 5.Educate less experienced students regarding cybersecurity and provide the leadership in sharing and deepening the understanding of cybersecurity issues among the student community
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Describe fundamental concepts and techniques for determining the asymptotic behavior of real-valued functions defined in natural numbers.
- 2.Explain recurrence equations and solve common recurrences using a variety of techniques.
- 3.Analyze an algorithm described in plain language or some form of pseudocode in terms of its time (or space) efficiency as a function of the size of a problem instance.
- 4.Explain how various data structures, including trees, heaps and disjoint set structures, influence the time efficiency of algorithms.
- 5.Apply general algorithmic design and analysis techniques to solving problems, including greedy, divide-and-conquer and dynamic programming.
- 6.Identify randomization in algorithms and analyze basic randomized algorithms such as randomized quicksort and selection.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Describe fundamental concepts and techniques for determining the asymptotic behavior of real-valued functions defined in natural numbers.
- 2.Explain recurrence equations and solve common recurrences using a variety of techniques.
- 3.Analyze an algorithm described in plain language or some form of pseudocode in terms of its time (or space) efficiency as a function of the size of a problem instance.
- 4.Explain how various data structures, including trees, heaps and disjoint set structures, influence the time efficiency of algorithms.
- 5.Apply general algorithmic design and analysis techniques to solving problems, including greedy, divide-and-conquer and dynamic programming.
- 6.Identify randomization in algorithms and analyze basic randomized algorithms such as randomized quicksort and selection.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Understand the equivalence of decision problems and language recognition problems and understand the limitations of different classes of computational machine (finite automata, pushdown automata, Turing machine) in recognizing different classes of language.
- 2.Prove the equivalence of DFA, NFA, regular expressions and the equivalence of PDA and CFG.
- 3.Design finite automata and write regular expressions for regular languages.
- 4.Write context-free grammar (CFG) for context-free languages, especially for expressions occurring in programming languages.
- 5.Design pushdown automata for context-free languages. Given a context-free grammar, construct a PDA that accepts the language generated by the given grammar.
- 6.Given a non-deterministic finite automaton (NFA), convert it to a deterministic finite automaton (DFA).
- 7.Apply pumping theorem to prove that a language is not regular or not context free.
- 8.Understand the Church-Turing thesis and the unsolvability of the halting problem and apply reduction technique to prove the undecidability of decision problems, in particular language recognition problems.
- 9.Understand the concepts of P, NP, and NP-completeness and use reductions to prove that a given problem is NP-complete.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Evaluate the use of the Internet in society.
- 2.Assess HTML and related display techniques including CSS.
- 3.Build browser-based programs using the JavaScript language, including DHTML and event handling.
- 4.Program advanced browser display technologies including Flash and SVG, and differentiate between the technologies.
- 5.Develop code for handling communication between web page components such as JavaScript, Flash and applets.
- 6.Install and describe the operation of a server such as Apache and develop server side code in an appropriate language such as PHP.
- 7.Identify the most common HTTP instructions and their methods of client-server interaction, including cookies.
- 8.Identify XML and related technologies including DOM handling.
- 9.Develop complex programs for browser-server communications, including use of Ajax.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Design and implement computer languages, in particular simple programming languages
- 2.Construct and extend compilers
- 3.Implement complex language specifications
- 4.Coordinate software development with a project partner
- 5.Deliver working software artifacts written in a high-level programming language
- 6.Master basic formal techniques for reasoning about program semantics
- 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 5212DescriptionThis course provides a comprehensive coverage of the machine learning field. It introduces the foundations of machine learning, such as optimization, regularization, and generalization. It covers several traditional machine learning algorithms and various types of neural networks, such as feedforward, convolutional, recurrent, and transformer models, as well as their applications to computer vision, natural language processing, and generative modelling. The course also includes selected advanced topics.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Identify the types of problem that can be solved by machine learning techniques.
- 2.Explain the concepts and characteristics of supervised learning methods and evaluate the different classifiers.
- 3.Explain the concepts and characteristics of basic clustering methods.
- 4.Explain the concept and characteristics of feature extraction.
- 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 5221Cross-Campus Equivalent CourseAIAA 4051DescriptionHuman 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Define the fundamental concepts of natural language processing and machine translation and implement them using standard functional AI programming methods.
- 2.Describe the foundational input-output formulations of transduction, such as alignment, chunking, classification, dependency relations and parsing and examine the relationship between noisy channel and loglinear models of string transduction, and their Bayesian interpretations.
- 3.Discuss the relationship between word segmentation and phrasal lexicons, the relationship to transduction and alignment, and associated algorithms.
- 4.Analyze the strengths and weaknesses of part-of-speech models, and associated tagging algorithms.
- 5.Identify the various fundamental approaches to shallow and deep parsing, and examine how they deal with syntactic ambiguity.
- 6.Describe how bilingual models of syntax generalize upon monolingual models to improve learnability.
- 7.Assess the combinatorial and empirical trade-offs between various learning models of alignment and compositionality, and their associated algorithms.
- 8.Describe the core methods for inducing lexicons, translation lexicons and phrasal translation lexicons, as well as permutation and reordering models.
- 9.Evaluate the combinatorial and empirical trade-offs between various runtime models for translation, and their associated algorithms.
- 10.Explain how bilingual transduction models generalize upon monolingual parsing models.
- 11.Evaluate lexical semantics models for word sense disambiguation, their relationship to phrasal lexicons and transduction and associated ambiguity resolution algorithms.
- 12.Identify lexical semantics models for semantic frames (predicate-argument structures) and associated semantic role labeling algorithms.
- 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 4632 (prior to 2021-22)Cross-Campus Equivalent CourseAIAA 4255DescriptionThis 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Explain the basic principles behind machine learning algorithms for structured data
- 2.Implement programs for structured prediction tasks
- 3.Formulate machine learning solutions to domain problems
- 4.Demonstrate the ability to understand of the complexity of real world problems
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Design and implement a complete and functional search engine.
- 2.Test and evaluate the effectiveness of a search engine.
- 3.Identify the limitations of search engine technologies and develop solutions to meet application requirements.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Map a practical problem to a data mining problem.
- 2.Propose solutions to data mining problems.
- 3.Evaluate basic literature in the data mining area.
- 4.Apply data mining to new practical problems.
- COMP 4332Big Data Mining and Management3 Credit(s)Co-list withRMBI 4310Prerequisite(s)COMP 4211 OR COMP 4331 OR ISOM 3360Cross-Campus Equivalent CourseAIAA 4332DescriptionThis 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Identify big data issues such as mining and managing distributed data and sampling big data; and apply a range of cloud computing techniques to big data.
- 2.Apply data mining techniques to areas such as business intelligence, science and engineering.
- 3.Critically evaluate advanced literature in the data mining area.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Build an interactive impressionistic paint system, similar in spirit to Paul Haeberli's The Impressionist.
- 2.Build a viewer in which to construct a hierarchical articulated model using OpenGL.
- 3.Build a program to create photorealistic raytraced images, complete with computation of shadows, reflections, and transparent effects.
- 4.Build an Animator which includes animation curves on geometry and allows creation a 3D animation of an articulated model.
1. Analyze real-time and offline computer graphics.
2. Apply the mathematics used in computer graphics.
3. Identify basic modeling techniques, such as spline curves and surfaces and hierarchical modeling.
4. Illustrate the use of basic rendering techniques, such as viewing transformations and scan conversion for real-time rendering, as well as ray tracing for offline rendering.
5. Apply basic techniques to light, shade, and texture map 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 3130, 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Identify basic image enhancement techniques in both the spatial and frequency domains.
- 2.Enhance an image in the presence of noise and distortion.
- 3.Apply basic morphological image processing techniques.
- 4.Segment image components from an image.
- 5.Register images with similarity metrics and transformations.
- 6.Compress an image with lossless or lossy compression methods.
- 7.Represent and describe an image using different feature descriptors.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Identify and apply digital audio representation concepts, tools and algorithms used to process digital audio.
- 2.Identify and apply digital image representation concepts, tools and algorithms used to process digital images.
- 3.Identify and apply digital video representation concepts, tools and algorithms used to process digital video.
- COMP 4441Music Video Creation3 Credit(s)Prerequisite(s)COMP 1021 OR COMP 1022P OR COMP 1023 OR COMP 2011 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Evaluate the use of music in computer applications.
- 2.Discuss the basics of common practice music notation, including pitch, rhythm, and dynamics, translate common practice music notation into computer music languages such as Csound and identify the basics of musical acoustics, including vibration and harmonic series.
- 3.Apply spectrum analysis tools and techniques, including the phase vocoder and analyze the frequency content of a sound with applications such as Spectrogram and PVan.
- 4.Implement the most common sound synthesis methods, including additive, wavetable, FM and sampling synthesis in computer music languages such as Csound and develop instrument designs for acoustic music instruments in computer music languages such as Csound.
- 5.Identify the most common sound effects, including echo and reverberation, implement these effects in computer music languages such as Csound, apply these effects to different types of sound and evaluate how they modify the sound.
- COMP 4451Game Programming3 Credit(s)Prerequisite(s)COMP 3711 OR COMP 3711HDescriptionComputer 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Understand design principles of computer games.
- 2.Learn and implement real-time graphics rendering techniques.
- 3.Learn basic concepts of artificial intelligence that are applicable to computer games.
- 4.Learn basic concepts of networking that are applicable to computer games.
- 5.Learn basic concepts of music and sound that are applicable to computer games.
- 6.Ability to design a game implementing most of the above.
- COMP 4461Human-Computer Interaction3 Credit(s)Prerequisite(s)COMP 2011 OR COMP 2012 OR COMP 2012HCross-Campus Equivalent CourseROAS 4500DescriptionThis 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Understand the basic concepts and methods in HCI research
- 2.Learn to identify user needs, abilities, and constraints
- 3.Learn to design, prototype and evaluate an interactive system
- 4.Communicate effectively with target users and different stakeholders in academia and industry
- 5.Analyze potential social impact and responsibilities as well as possible ethical, legal, security and privacy issues
- COMP 4462Data Visualization3 Credit(s)Prerequisite(s)COMP 2011 OR COMP 2012 OR COMP 2012HCross-Campus Equivalent CourseFTEC 4280DescriptionThis 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Understand human visual system, color, design principles, and core techniques of data visualization
- 2.Learn to understand domain problems and needs of end users
- 3.Learn to design, implement and evaluate a visualization system
- 4.Communicate effectively with domain experts, general public, and different stakeholders in government, academia and industry
- 5.Analyze social impact and responsibilities as well as possible ethical, legal, security and privacy issues
- COMP 4471Deep Learning in Computer Vision3 Credit(s)Alternate code(s)ELEC 4240Prerequisite(s)(COMP 1023 OR COMP 2011 OR COMP 2012 OR COMP 2012H) AND (MATH 2111 OR MATH 2121 OR MATH 2131 OR MATH 2350)Cross-Campus Equivalent CourseELEC 4240, ROAS 4471DescriptionDeep 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Understand the basics of deep neural networks
- 2.Train deep neural networks on several computer vision tasks
- 3.Use deep learning as a tool to solve a research problem of their interests in a group
- COMP 4521Mobile Application Development3 Credit(s)Prerequisite(s)(COMP 2611 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Critically discuss embedded systems and software development.
- 2.Assess cross-platform development.
- 3.Analyze the salient features and characteristics of embedded systems and differentiate them from traditional computer systems.
- 4.Evaluate real-time operating systems.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Design, implement and evaluate a IoT system to achieve smarting purpose with certain application domain, such as smart home or smart healthcare
- 2.Use new techniques and tools necessary for practical IoT system design of concrete application domain, such as smart home or smart healthcare
- 3.Apply knowledge of computing and mathematics appropriate to the IoT and smart sensing problem space
- 4.Analyze the IoT system related problem, and identify and define the smart sensing requirements appropriate to its solution
- 5.Explain and present the IoT system to audience with relatively technical background
- 6.Communicate effectively with a range of audiences by presenting the state-of-art work related to IoT system and lead the related discussion
- COMP 4541Blockchain, Cryptocurrencies and Smart Contracts3 Credit(s)Previous Course Code(s)COMP 4901WPrerequisite(s)COMP 2012 OR COMP 2012HCross-Campus Equivalent CourseFTEC 4210DescriptionThis 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Recognize, Design, Implement and Differentiate Standard Cryptographic Primitives and Cryptocurrency Protocols
- 2.Recognize, Explain and Critique the foundations of Blockchains and how Blockchain-like Protocols and Distributed Ledgers Work
- 3.Classify, Implement, and Differentiate Consensus Protocols, showing familiarity with Proof-of-Work, including its non-technical impacts on the environment, as well as its greener alternatives such as Proof-of-Stake
- 4.Develop and implement Decentralized Applications (Dapps), specifically on the Ethereum Blockchain and using the Solidity programming language
- 5.Experience with Smart Contract Auditing and Ability to Detect and Classify Common Security Vulnerabilities such as Reentrancy and Out-of-gas, as well as their potential economic impacts
- 6.Interpret, Compare and Build Upon Technical Whitepapers concerning Decentralized Ledger Technologies and to Keep up to date with New Inventions in the Field
- 7.Implement and Execute Blockchain-based Platforms, Individually and as a Member of a Team
- COMP 4611Design and Analysis of Computer Architectures3 Credit(s)Prerequisite(s)COMP 2611 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Assess the intricate nuances of designing computer architectures with the aim of improving performance, balancing performance, cost and power consumption.
- 2.Analyze various techniques at different levels of computer architecture design that can be used effectively to meet performance goals.
- 3.Critically evaluate computer architectures and systems.
- 4.Select and apply various performance evaluation techniques and tools.
- COMP 4621Computer and Communication Networks3 Credit(s)Prerequisite(s)COMP 2611 OR [ELEC 2350 AND (COMP 2011 OR COMP 2012H)]Exclusion(s)COMP 5621, ELEC 3120, ISOM 3180Cross-Campus Equivalent CourseFTEC 4260BackgroundProbability 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Define the basic principles of computer networks, architecture and protocols.
- 2.Identify the principles of networked applications, including C/S based applications (such as HTTP, FTP, SMTP and DNS) and P2P based applications (including Napster, Gnutella, BT, Skype, etc.).
- 3.Discuss the major transport layer protocols, such as TCP and UDP.
- 4.Illustrate the principles of routing algorithms and their applications on the Internet.
- 5.Identify basic link layer protocols and the basic medium access mechanism.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Understand the current security threat and future trend of IT security industry
- 2.Design and develop web application with security features
- 3.Incorporate best security practices in application developments (such as ISO 27000 series, OWASP Top 10 risks)
- 4.Apply Information security governance and risk management to real life scenario
- 5.Perform auditing of information systems
- 6.Set up ethical hacking and security testing/assessment tools
- 7.Launch web application penetration test
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Apply and understand ethical hacking
- 2.Acquire leadership through the training of the more junior student members who will be taking part in the cybersecurity contests
- 3.Educate less experienced students regarding cybersecurity and provide the leadership in sharing and deepening the understanding of cybersecurity issues among the student community
- 4.Deal with real-world cyber-security issues, providing concrete advice to the various cyber-security problem to the senior management of the various organizations
- 5.Explore and equipment themselves with the advanced techniques to deal with cyber-attacks and provide the leadership in fighting against cyber-attacks
- COMP 4634Cybersecurity3 Credit(s)Previous Course Code(s)COMP 3632Prerequisite(s)(COMP 2012 OR COMP 2012H) AND COMP 3631DescriptionThis course is an introduction to the landscape of computer security and privacy. 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.State and describe the underpinning principles of cybersecurity and relate them to past and ongoing events
- 2.Apply cybersecurity principles to recognize vulnerabilities in computer systems, including protocols, hardware, and software
- 3.Identify and implement effective defenses for computer systems against potential cybersecurity attacks
- 4.Study and understand cybersecurity protections and attacks on networks, databases, financial systems and operating systems
- 5.Understand how to design and apply business continuity plans, incidence response plans, and cybersecurity risk analysis to enforce cybersecurity best practices in business
- COMP 4635Practical Cloud Computing Security3 Credit(s)Prerequisite(s)COMP 2611 OR COMP 2633DescriptionThe practical cloud security course covers a comprehensive range of topics to address security challenges in cloud computing. It explores the fundamentals of cloud infrastructure, common threats and attack vectors, security architecture in various cloud service and deployment models, software-based security tools, identity and access management, patch management, and data security controls. The course emphasizes hands-on implementation work and application development to provide students with practical experience. By the end of the course, participants will have gained the knowledge and skills necessary to effectively secure cloud environments and protect against evolving security threats. The curriculum also covers current security trends, best practices in the IT security industry, and design requirements for secure cloud computing environments across platforms like AWS and Azure. Students will set up web, application, and database servers in the AWS EC2 environment, where they will launch web and network attacks to configure security groups and accounts.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Understand the current security threat and future trend of Cloud Computing Security
- 2.Design and develop applications with security features in Cloud Environment according to NIST standards
- 3.Incorporate best security practices in Cloud Environment (such as latest Cloud Security Alliance Security Guidance, Cloud Control Matrix, ISO 27000 series, OWASP Top 10 risks)
- 4.Apply Information security governance and risk management to real life scenario
- 5.Perform Cloud Computing Architecture Design (IaaS, PaaS, SaaS)
- 6.Launch secure cloud application environment
- 7.Set up and conduct security testing/assessment tools
- 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)Cross-Campus Equivalent CourseAIAA 4641DescriptionThis 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Distinguish the mechanisms and principles of typical social information systems.
- 2.Summarize the topological properties of a social network and the models of network formation.
- 3.List the dynamic properties of social networks and evaluate the spreading of information and epidemics.
- 4.Describe navigation and influence in social networks.
- 5.Explain the human factors in computer systems' design and be able to improve system performance using social metrics.
- 6.Write a program of fewer than a thousand lines of code to crawl and collect social network data. .
- 7.Use common software tools to analyze and visualize social network data.
- 8.Work in a team project to improve one aspect of the current social network services/systems in one or more of the theoretical, algorithmic, system, or software aspects.
- COMP 4651Cloud Computing and Big Data Systems3 Credit(s)Prerequisite(s)COMP 2011 OR COMP 2012HCross-Campus Equivalent CourseDSAA 4040DescriptionBig 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Describe the motivation, objectives, and architecture of cloud computing and big data systems
- 2.Understand the use of production cloud computing platform
- 3.Understand the general architecture and the use of Hadoop Distributed File System (HDFS)
- 4.Understand the general programming model of MapReduce and the use of Hadoop
- 5.Understand Resilient Distributed Dataset (RDD) and the use of Spark programming model based on RDD
- 6.Describe the major architecture difference between Hadoop and Spark
- 7.Write a MapReduce/Spark program with tens to hundreds lines of code to solve common data analytics problems at scale
- 8.Use software tools to develop and debug a program written in Hadoop and Spark
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Develop relationships with faculty members and staff.
- 2.Examine the value of and assume ownership of his/her education.
- 3.Become self-directed in planning and accomplishing short and long-term academic goal.
- 4.Identify short and long-term career and personal plans and aspirations and work towards these by establishing realistic development plans.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Describe the key concepts and theories related to the selected topic in computer science.
- 2.Analyze case studies relevant to the topic and draw informed conclusions based on the findings.
- 3.Evaluate the effectiveness of different approaches to solving problems associated with the topic.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Use tools or platforms commonly used in the engineering industry in order to solve engineering and business problems in an efficient, economical, and practical way
- 2.Be well-equipped to enter and become productive members of the work force
- 3.Be aware of the professional practices and ethical responsibilities of engineers
- 4.Gain experience applying their knowledge of mathematics, science and computer science and engineering in an industrial setting
- 5.Cooperate with people from various disciplines and backgrounds to work in a team environment
- COMP 4911IT Entrepreneurship3 Credit(s)Alternate code(s)ENTR 4911Prerequisite(s)COMP 1021 OR COMP 1022P OR COMP 1022Q OR COMP 1023 OR COMP 2011 OR COMP 2012H OR ISOM 3230Cross-Campus Equivalent CourseAIAA 4911, ENTR 4911DescriptionBasic 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Identify the basic principles and practices involved in either starting a company or planning to work in a start-up company, and any pitfalls to be avoided.
- 2.Summarize the basic principles of IT entrepreneurship.
- 3.Recognize and act upon opportunities for building a personal business network.
- 4.Evaluate potential business opportunities and develop appropriate decision-making skills so as to take best advantage of those opportunities.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Develop the ability to conduct independent research on a computer science topic.
- 2.Gain practical experience with relevant tools, technologies, or methodologies.
- 3.Improve written and oral communication skills through the preparation of reports and presentations.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Develop original solutions to computer science engineering problems of significant complexity.
- 2.Utilize prior knowledge, independent research, published information, and original ideas in addressing problems and generating solutions.
- 3.Critically evaluate different design concepts, and justify the final choice of design through engineering analysis.
- 4.Use software engineering tools to plan, design, implement, validate and maintain a project.
- 5.Prepare and deliver a well structured written analysis of a project, as well as an oral presentation.
- 6.Establish relationships and implement practices with team members and advisors that will underpin a high level of performance and encourage continuous improvement.
- 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.Intended Learning Outcomes
On successful completion of the course, students will be able to:
- 1.Develop original solutions to computer science engineering problems of significant complexity.
- 2.Utilize prior knowledge, independent research, published information, and original ideas in addressing problems and generating solutions.
- 3.Critically evaluate different research approaches, and justify the final choice of design through system development, simulation and/or analysis.
- 4.Use computational and/or mathematical tools to plan, design and validate an approach if needed.
- 5.Prepare and deliver a well-structured written analysis of the project, as well as an oral defense.
- 6.Establish relationships and implement practices with advisors and/or local/international researchers that will underpin a high level of performance and encourage continuous improvement.