Computer Science and Engineering

COMP 1001 Exploring Multimedia and Internet Computing [3 Credit(s)]
This course is an introduction to computers and computing tools. It 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. Exclusion(s): ISOM 2010, any COMP courses of 2000-level or above

COMP 1002 Computer and Programming Fundamentals I [3 Credit(s)]
Introduction to computers and programming. Computer hardware and software. Problem solving. Program design. Procedural abstraction. Debugging and testing. Simple and structured data types. Recursive programming. Introduction to searching and sorting. Exclusion(s): COMP 1004 (prior to 2013-14), COMP 1021, COMP 1022P, COMP 1022Q

COMP 1021 Introduction to Computer Science [3 Credit(s)]
This 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. Exclusion(s): COMP 1002, COMP 1004 (prior to 2013-14), COMP 1022P, COMP 1022Q, COMP 2011

COMP 1022P Introduction to Computing with Java [3 Credit(s)]
This 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. Exclusion(s): COMP 1002, COMP 1004 (prior to 2013-14), COMP 1021, COMP 1022Q, COMP 2011, ISOM 3320

COMP 1022Q Introduction to Computing with Excel VBA [3 Credit(s)]
This course is designed to equip students with the fundamental concepts of programming using the VBA programming language, within the context of the Microsoft Excel program. Students will first learn how to use Excel to analyze and present data, and will then learn how to use VBA code to build powerful programs. Exclusion(s): COMP 1002, COMP 1004 (prior to 2013-14), COMP 1021, COMP 1022P, COMP 2011, ISOM 3230

COMP 1029A Introduction to Mobile Application Development Using Android [1 Credit(s)]
[Previous Course Code(s): COMP 4901C] This course provides a basic introduction to mobile application development using the Android platform. It is intended for students who have some prior programming experience, but wish to learn the basics of mobile application development. The course will introduce them to the Android SDK and development environment, Android application components: Activities and their lifecycle, UI design, Multimedia, and 2D graphics support in Android. Students explore these concepts through self-learning course materials and guided laboratory exercises. Graded P or F. Prerequisite(s): COMP 1002 OR COMP 1004 (prior to 2013-14) OR COMP 1021 OR COMP 1022P OR COMP1022Q

COMP 1029C C Programming Bridging Course [1 Credit(s)]
This 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. Exclusion(s): COMP 1002, COMP 1004 (prior to 2013-14), COMP 2011 Prerequisite(s): COMP 1021 OR COMP 1022P OR COMP 1022Q OR ISOM 3230 OR ISOM 3320

COMP 1029J Java Programming Bridging Course [1 Credit(s)]
This 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. Exclusion(s): COMP 1022P, COMP 3021, ISOM 3320 Prerequisite(s): COMP 1002 OR COMP 1004 (prior to 2013-14) OR COMP 1021 OR COMP 1022Q OR ISOM 3230

COMP 1029P Python Programming Bridging Course [1 Credit(s)]
This 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. Exclusion(s): COMP 1021 Prerequisite(s): COMP 1002 OR COMP 1004 (prior to 2013-14) OR COMP 1022P OR COMP 1022Q OR ISOM 3230 OR ISOM 3320

COMP 1029V Excel VBA Programming Bridging Course [1 Credit(s)]
This 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. Exclusion(s): COMP 1022Q, ISOM 3230 Prerequisite(s): COMP 1002 OR COMP 1004 (prior to 2013-14) OR COMP 1021 OR COMP 1022P OR ISOM 3320

COMP 1900 Academic and Professional Development I [0 Credit(s)]
A compulsory one-year course for students of the Department of Computer Science and Engineering under the three-year degree. This course is designed to provide academic advising to students and to develop their communication skills in interacting with technical and non-technical audiences. Graded P or F.

COMP 1941 Great Ideas in Computing [3 Credit(s)]
Digital computing technology has brought many sweeping revolutions to our society. This course introduces some great and inspiring ideas in computing in the modern world, and discusses how people use computing tools to create useful solutions for challenging and important problems we are facing. Topics include artificial intelligence, data mining, biometrics, computational complexity, cryptography, efficient search, webpage ranking, network science, computer and society, and computational photography.

COMP 1942 Exploring and Visualizing Data [3 Credit(s)]
This 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. Exclusion(s): COMP 4331, ISOM 3360, RMBI 4310

COMP 1991 Industrial Experience [0 Credit(s)]
Full-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 1999 Industrial Training [0 Credit(s)]
[Previous Course Code(s): COMP 2999] A practical training course in a simulated industrial environment. For students of the Department of Computer Science and Engineering only. Graded P or F.

COMP 2011 Introduction to Object-oriented Programming [4 Credit(s)]
This course is an introduction to object-­‐oriented programming and data structures. Students will learn abstract data types and their implementation as classes in an object-­‐oriented programming language; static and dynamic construction and destruction of objects; data member and member functions; public interface and encapsulation. It will cover data structures such as stacks, queues, linked lists, and binary trees. Exclusion(s): COMP 1004 (prior to 2013-14) Prerequisite(s): COMP 1021 OR COMP 1022P OR COMP 1022Q OR ISOM 3230

COMP 2012 Object-Oriented Programming and Data Structures [4 Credit(s)]
To 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, queues, stacks, trees, and algorithms such as searching, sorting, and hashing algorithms. Exclusion(s): COMP 2012H Prerequisite(s): COMP 1004 (prior to 2013-14) OR COMP 2011

COMP 2012H Honors Object-Oriented Programming and Data Structures [5 Credit(s)]
This 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. Exclusion(s): COMP 1004 (prior to 2013-14), COMP 2011, COMP 2012 Prerequisite(s): Grade A or above in COMP 1002 / COMP 1021 / COMP 1022P / COMP 1022Q / ISOM 3230

COMP 2021 Unix and Script Programming [3 Credit(s)]
Unix utilities and file structure; links and symbolic links; data processing and process control in the Unix shell; Shell programming; regular expressions; script programming in the Unix environment. Laboratory exercises are designed to give hands-on practice with software tools and to increase programmer productivity. Prerequisite(s): COMP 1002 OR COMP 1004 (prior to 2013-14) OR COMP 1021 OR COMP 1022P OR COMP 1022Q; OR a passing grade in HKALE Computer Studies or HKCEE Computer Studies; OR level 3 or above in HKDSE Information and Communication Technology

COMP 2521 Mobile Application Development Projects [3 Credit(s)]
[Previous Course Code(s): COMP 4901E] This course is intended to bring together students from different disciplines to focus on coming up with innovative mobile solutions to address domain-specific problems. This will be a student-led project-based course. Teams of students will focus on developing applications to address the needs of specific application domains. Learning additional technical knowledge will be demand-driven in self-learning mode. Students will be supported by technical advisors, which include a faculty member who is the main instructor, as well as instructional assistant(s) and student helpers with technical knowledge.

COMP 2611 Computer Organization [4 Credit(s)]
Inner 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. Exclusion(s): ELEC 2300 Prerequisite(s): COMP 1004 (prior to 2013-14) OR COMP 2011 OR COMP 2012H

COMP 2711 Discrete Mathematical Tools for Computer Science [4 Credit(s)]
Basic 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. Exclusion(s): COMP 2711H, MATH 2343 Prerequisite(s): A passing grade in AL Pure Mathematics/AL Applied Mathematics; OR level 3 or above in HKDSE Mathematics Extended Module M1/M2 Corequisite(s): (For students without prerequisites) MATH 1012 OR MATH 1013 OR MATH 1014 OR MATH 1018 OR MATH 1020 OR MATH 1023 OR MATH 1024

COMP 2711H Honors Discrete Mathematical Tools for Computer Science [4 Credit(s)]
Discrete 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. Exclusion(s): COMP 2711, MATH 2343 Prerequisite(s): Grade B or above in AL Pure Mathematics/AL Applied Mathematics; OR 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 1024

COMP 2900 Academic and Professional Development II [0 Credit(s)]
Continuation of COMP 1900. A compulsory, one year course for students of the Department of Computer Science and Engineering under the three-year degree. Graded P or F.

COMP 3021 Java Programming [3 Credit(s)]
Introduction to Java programming. Fundamentals include language syntax, object-oriented programming, inheritance, polymorphism, exception handling, multithreading. Standard libraries for input/output, graphics programming, built-in data structures. Programming for events, web, networking, generics. Exclusion(s): ISOM 3320 Prerequisite(s): COMP 2012 OR COMP 2012H

COMP 3031 Principles of Programming Languages [3 Credit(s)]
Comparative 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. Prerequisite(s): COMP 2012 OR COMP 2012H

COMP 3071 Honors Competitive Programming [2 Credit(s)]
Intensive 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 3111 Software Engineering [4 Credit(s)]
Methods 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. Exclusion(s): COMP 3111H, ISOM 3210, RMBI 4420 (prior to 2016-17) Prerequisite(s): COMP 2012 OR COMP 2012H

COMP 3111H Honors Software Engineering [4 Credit(s)]
General 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. Exclusion(s): COMP 3111, ISOM 3210, RMBI 4420 (prior to 2016-17) Prerequisite(s): Grade A- or above in COMP 2012 / COMP 2012H

COMP 3211 Fundamentals of Artificial Intelligence [3 Credit(s)]
Foundations 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. Exclusion(s): COMP 5211 Prerequisite(s): COMP 2011 OR COMP 2012 OR COMP 2012H

COMP 3311 Database Management Systems [3 Credit(s)]
Principles 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. Exclusion(s): COMP 5311, IELM 3300, ISOM 3260 Prerequisite(s): COMP 2011 OR COMP 2012 OR COMP 2012H

COMP 3511 Operating Systems [3 Credit(s)]
Principles, 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. Prerequisite(s): COMP 2611 OR [ELEC 2300 AND (COMP 1002 OR COMP 1004 (prior to 2013-14) OR COMP 2011 OR COMP 2012H)]

COMP 3632 Principles of Cybersecurity [3 Credit(s)]
This 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. Prerequisite(s): COMP 2012 OR COMP 2012H

COMP 3711 Design and Analysis of Algorithms [3 Credit(s)]
Techniques 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. Exclusion(s): COMP 3711H Prerequisite(s): (COMP 2011 OR COMP 2012 OR COMP 2012H) AND (COMP 2711 OR COMP 2711H OR MATH 2343)

COMP 3711H Honors Design and Analysis of Algorithms [4 Credit(s)]
Techniques 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. Exclusion(s): COMP 3711 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)

COMP 3721 Theory of Computation [3 Credit(s)]
This 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. Prerequisite(s): (COMP 3711 OR COMP 3711H) AND (MATH 2111 OR MATH 2121 OR MATH 2350)

COMP 3900 Academic and Professional Development III [0 Credit(s)]
Continuation of COMP 2900. A compulsory, one year course for students of the Department of Computer Science and Engineering under the three-year degree. Graded P or F.

COMP 4021 Internet Computing [3 Credit(s)]
Technologies 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. Prerequisite(s): COMP 2012 OR COMP 2012H

COMP 4111 Software Engineering Practices [3 Credit(s)]
This 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. Prerequisite(s): COMP 3111 OR COMP 3111H

COMP 4211 Machine Learning [3 Credit(s)]
Fundamentals of machine learning. Concept learning. Evaluating hypotheses. Supervised learning, unsupervised learning and reinforcement learning. Bayesian learning. Ensemble Methods. Deep learning. Exclusion(s): COMP 4331, COMP 5212, ISOM 3360 Prerequisite(s): (COMP 2011 OR COMP 2012 OR COMP 2012H) AND (ELEC 2600 OR IELM 2510 OR MATH 2411 OR MATH 2421 OR MATH 2431)

COMP 4221 Introduction to Natural Language Processing [3 Credit(s)]
Human 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. Exclusion(s): COMP 5221 Prerequisite(s): ELEC 2600 OR IELM 2510 OR MATH 2411 OR MATH 2421 OR MATH 2431

COMP 4311 Principles of Database Design [3 Credit(s)]
Data modeling concepts; conceptual, logical and physical design; analyzing, evaluating and improving schemas; schema documentation and maintenance; functional analysis; design tools; schema mappings; database tuning; distributed database design. Exclusion(s): ISOM 3260 Prerequisite(s): COMP 3311

COMP 4321 Search Engines for Web and Enterprise Data [3 Credit(s)]
Text 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. Prerequisite(s): COMP 2011 OR COMP 2012 OR COMP 2012H

COMP 4331 Data Mining [3 Credit(s)]
This 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. Exclusion(s): COMP 4211, ISOM 3360 Prerequisite(s): IELM 2510 OR ISOM 2500 OR LIFS 3150 OR MATH 2411

COMP 4332 Big Data Mining and Management [3 Credit(s)]
[Co-List with RMBI 4310] This 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. Prerequisite(s): COMP 4211 OR COMP 4331 OR ISOM 3360

COMP 4411 Computer Graphics [3 Credit(s)]
Display 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. Prerequisite(s): COMP 3711 OR COMP 3711H

COMP 4421 Image Processing [3 Credit(s)]
Introduction 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. Exclusion(s): ELEC 4130, MATH 4336 Prerequisite(s): (COMP 2011 OR COMP 2012 OR COMP 2012H) AND (MATH 2011 OR MATH 2111 OR MATH 2350 OR MATH 2351 OR MATH 2352)

COMP 4431 Multimedia Computing [3 Credit(s)]
Color theory; digital audio, image and video fundamentals, representation, and processing; digital multimedia applications and programming. Exclusion(s): ELEC 4170 Prerequisite(s): COMP 2012 OR COMP 2012H

COMP 4441 Computer Music [3 Credit(s)]
An introductory course in the technology of computer music. Music representation, music theory, musical acoustics, spectral analysis, sound synthesis techniques, sound modification techniques and effects. No previous musical background required, but helpful. Prerequisite(s): COMP 2011 OR COMP 2012 OR COMP 2012H

COMP 4451 Game Programming [3 Credit(s)]
Computer 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. Corequisite(s): COMP 4411

COMP 4511 System and Kernel Programming in Linux [3 Credit(s)]
This 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. Prerequisite(s): COMP 3511 Corequisite(s): COMP 4621 OR ELEC 4120

COMP 4521 Mobile Application Development [3 Credit(s)]
Principles 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. Prerequisite(s): (COMP 2611 OR ELEC 2300) AND COMP 3511

COMP 4611 Design and Analysis of Computer Architectures [3 Credit(s)]
Analysis, 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. Prerequisite(s): COMP 2611 or ELEC 2300

COMP 4621 Computer Communication Networks I [3 Credit(s)]
Principles 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. Exclusion(s): COMP 5621, ELEC 4120, ISOM 3180 Prerequisite(s): COMP 3511 Background: Probability and statistics

COMP 4622 Computer Communication Networks II [3 Credit(s)]
Multimedia requirements; bridges and their spanning tree protocol; advanced internet protocols (IPv6, Diffserv, IntServ, etc.); congestion control and QoS; multicast and broadcast algorithms; network performance and programming; introduction to network security. Exclusion(s): COMP 5621 Prerequisite(s): COMP 4621 or ELEC 4120

COMP 4631 Computer and Communication Security [3 Credit(s)]
Cryptosystems, symmetric-key and public-key cryptography, cryptanalysis, authentication, message digests, digital signatures, and random number generation. Access controls and firewalls. Applications such as certificate authorities, electronic commerce, smartcards, and digital cash. Exclusion(s): COMP 5631 Prerequisite(s): COMP 3711 OR COMP 3711H

COMP 4632 Practicing Cybersecurity: Attacks and Counter-measures [3 Credit(s)]
This 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. Prerequisite(s): COMP 2012 OR COMP 2012H Corequisite(s): COMP 3511

COMP 4641 Social Information Network Analysis and Engineering [3 Credit(s)]
[Previous Course Code(s): COMP 4901B] This 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. Prerequisite(s): (COMP 2011 OR COMP 2012H) AND MATH 2111 AND (ELEC 2600 OR IELM 2510 OR MATH 2411 OR MATH 2421 OR MATH 2431)

COMP 4651 Cloud Computing and Big Data Systems [3 Credit(s)]
Big 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. Prerequisite(s): COMP 2011 OR COMP 2012H

COMP 4900 Academic and Professional Development [0 Credit(s)]
This 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 4901 Special Topics in Computer Science [1-4 Credit(s)]
Selected 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 4911 IT Entrepreneurship [3 Credit(s)]
Basic 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. Exclusion(s): ELEC 3710 Prerequisite(s): COMP 2011 OR COMP 2012H

COMP 4971 Independent Work [1-4 Credit(s)]
Independent 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 4981 Final Year Project [6 Credit(s)]
Students 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. Exclusion(s): COMP 4981H

COMP 4981H Final Year Thesis [6 Credit(s)]
Students 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. Exclusion(s): COMP 4981

COMP 4982 Final Year Project [7 Credit(s)]
Students are expected to complete a project in an area of specialization in Computer Science 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. Exclusion(s): COMP 4982H

COMP 4982H Final Year Thesis (Honors Study Track) [7 Credit(s)]
Students are expected to conduct research work under the supervision of a faculty member, summarize their work in an individual thesis and make a presentation at the end. Enrollment in the course requires approval of the course instructor. Credit load will be spread over the year. Exclusion(s): COMP 4982

COMP 4983 Final Year Project I [3 Credit(s)]
A project in an area of specialization in Computer Science 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. May be graded PP. Exclusion(s): COMP 4983H

COMP 4983H Final Year Thesis I (Honors Study Track) [3 Credit(s)]
Students must take the whole course series comprising COMP 4983H and COMP 4984H in sequence. They are expected to conduct research work under the supervision of a faculty member, summarize their work in an individual thesis and make a presentation at the end of the sequence. Enrollment in the course requires approval of the course instructor. May be graded PP. Exclusion(s): COMP 4983

COMP 4984 Final Year Project II [4 Credit(s)]
Continuation of COMP 4983. Exclusion(s): COMP 4984H

COMP 4984H Final Year Thesis II (Honors Study Track) [4 Credit(s)]
Continuation of COMP 4983H. Exclusion(s): COMP 4984 Prerequisite(s): COMP 4983H

COMP 4988 Computer Engineering Final Year Project [6 Credit(s)]
Each student of the Computer Engineering program is required to complete a final year project before graduation. The student is expected to conduct a project on a topic related to Computer Engineering and/or its application. The project is guided and conducted under the supervision of faculty members from the Department of Computer Science and Engineering and/or the Department of Electronic and Computer Engineering. Instructor's approval is required for enrollment in the course. For CPEG students under the four-year degree only. May be graded PP.

COMP 4989 Computer Engineering Final Year Thesis [6 Credit(s)]
Each student taking the Research Option of the Computer Engineering program is required to complete an individual thesis before graduation. The student is expected to conduct a research on a topic related to Computer Engineering and/or its application. The thesis is conducted under the supervision of faculty members from the Department of Computer Science and Engineering and/or the Department of Electronic and Computer Engineering. Instructor's approval is required for enrollment in the course. For CPEG students under the four-year degree only. May be graded PP.

COMP 4991 Computer Engineering Final Year Project [8 Credit(s)]
Each Computer Engineering student is required to complete a final year project before graduation. The project is conducted under the supervision of faculty members of the Department of Computer Science and Engineering and/or Department of Electronic and Computer Engineering. Credit load will be spread over 3 terms.

COMP 4992 Computer Engineering Final Year Thesis [8 Credit(s)]
Only for honors students of the BEng Computer Engineering program. They are expected to conduct research/independent work under the supervision of faculty members of the Department of Computer Science and Engineering and/or Department of Electronic and Computer Engineering, summarize their work in an individual thesis and make a presentation at the end of the sequence. Credit load will be spread over 3 terms.