Course CSC 401 | Survey Organisation of Programming Languages | 400 Level | 1st Semester
Course Structure The concept of programming languages, general overview of programming languages, introduction to language description, evolution of level of programming languages and language comparison., concepts underlying modern programming languages. The practice of coding in various programming paradigms and with a very large number of programming languages. Exploration of imperative languages (C, C++, Java, etc.), functional languages (Lisp, ML, Haskell, etc.), declarative languages (Prolog, etc.) and interpreted scripting languages (Perl, Python, JavaScript, etc.). Describing syntax and semantics; lexical and syntax analysis; names, bindings and scope rules; data types; expressions and assignment statements; control structures; subprogram implementing subprogram; abstract data types and encapsulation construct; support for object?oriented programming; functional programming language; logical programming languages
Course CSC 402 | Special Topics in Computing | 400 Level | 2nd Semester
Course Structure Recent topics and developments in computing are expected to be introduced from year to year. Apart from seminars to be delivered by lecturers or guests, students are expected to do substantial readings on their own
Course CSC 403 | Software Engineering | 400 Level | 1st Semester
Course Structure Introduction to software engineering, software development life cycle models, software modelling, software requirements, specification, conceptual model design, detailed design, validation and verification, design quality assurance, software design/development environments, and project management. Software engineering for smart, critical, and complex software-intensive systems.
Course CSC 404 | Computing Performance Evaluation | 400 Level | 2nd Semester
Course Structure Introduction and overview, performance modelling; measurement techniques–on-chip performance monitoring, off-chip hardware monitoring, software monitoring, micro-coded instruction, aggregating performance metrics over a benchmark suite, statistical techniques for computer performance analysis, statistical sampling for processor and cache simulation, statistical simulation, benchmark simulation and introduction to analytical models; energy and power simulator, validation.
Course CSC 405 | Net-Centric Computing | 400 Level | 1st Semester
Course Structure Networking fundamentals, network security, network applications, mobile and wireless computing; network programming including sockets and web programming concepts.
Course CSC 406 | Project Management | 400 Level | 2nd Semester
Course Structure Team management, project scheduling, software measurement and estimation techniques, risk analysis, software quality assurance, software configuration management, project management tools.
Course CSC 407 | Data Communication Networks | 400 Level | 1st Semester
Course Structure Data communications: transmission media, data encoding, transmission modes, error detection and correction, flow control, multiplexing, switching techniques, routing; Networking: Network topologies, protocols, layering, standardisation, LANs, WANs MANs, internetworking, multihoming, real-time communication, security and privacy; Design and implementation of packet-based communication protocols: measurement of protocol operation and performance, packet-based protocol design, practical considerations of implementation of protocols in a high-level programming language; Study of particular networks and protocols: e.g. Ethernet, wireless/IEEE-802.11, ARP, ICMP, IPv6, IPsec, TCP, UDP, RTP/RTCP.
Course CSC 408 | Modelling and Simulation | 400 Level | 2nd Semester
Course Structure Introduction to the theory of computation; central areas of theory of computation: automata, computability and complexity; regular expressions, finite automata, pushdown and linear bounded automata; formal grammars and their corresponding classes of languages, Turing machines, undecidability, recursive functions; complexity theory; NP–completeness.
Course CSC 409 | Artificial Intelligence | 400 Level | 1st Semester
Course Structure Artificial intelligence; definition and applications. Problem solving: search, adversarial search and constraint solving. Knowledge and Reasoning: agents, logic, planning, knowledge representation. Uncertainty: probabilistic computation and reasoning, decision problems. Learning: from examples, learning models, reinforcement learning, neural networks, deep learning. Communication: natural language processing, perception, robotics.
Course CSC 410 | Theory of Computation | 400 Level | 2nd Semester
Course Structure Introduction to simulation concepts, introduction to models, problem formulation, project planning, system definition, input data collection and analysis, modelling translation, verification, validation, experimental design, analysis, project reports and presentations, training simulators.
Course CSC 411 | Computer Graphics Visualisation | 400 Level | 1st Semester
Course Structure Overview of input/output hardware, elements of graphics software; fundamental algorithms; two-dimensional viewing and transformation; design for interaction, and introduction to three-dimensional concepts; digital photography; video editing; survey of applications. Virtual environments technology, requirements and applications; presence; displays; programming virtual environments; devices. An overview of computer graphics for visualisation, scientific visualisation techniques; introduction to computer animation
Course CSC 412 | Distributed Computing Systems | 400 Level | 2nd Semester
Course Structure General introductory concepts in the design and implementation of distributed systems, covering all the major branches such as cloud computing, grid computing, cluster computing, supercomputing, and many-core computing. Scheduling in multiprocessors, memory hierarchies, synchronisation, concurrency control, fault tolerance, data parallel programming models, scalability studies, distributed memory message passing systems, shared memory programming models, tasks, dependence graphs and program transformations, parallel I/O, applications, tools (Cuda, Swift, Globus, Condor, Amazon AWS, OpenStack, Cilk, gdb, threads, MPICH, OpenMP, Hadoop, FUSE), SIMD, MIMD, fundamental parallel algorithms, parallel programming exercises, parallel algorithm design techniques, interconnection topologies, heterogeneity, load balancing, memory consistency model, asynchronous computation, partitioning, determinacy, Amdahl's Law, scalability and performance studies, vectorisation and parallelisation, parallel programming languages, and power.
Course CSC 413 | Human Computer Interaction | 400 Level | 1st Semester
Course Structure Human factors of interactive software; theories; principles and guidelines of human computer interaction design including command line interface, graphical user interface and application programmatic interface; event-driven application design and development; direct manipulation; interaction devices; system and feedback messages, gesture recognition system, computer supported cooperative work, virtual reality, augmented reality, multimedia system, robotic etc.
Course CSC 414 | Information Network Security | 400 Level | 2nd Semester
Course Structure Defensive programming, cryptography, public-key infrastructure, secure signature, certification, SSL, HTTPS, file encryption, hash-based message authentication code, session IDs, hashing, multi-factor authentication, network security, VPNs, IPSEC, wireless security, block chain, biometrics, quantum cryptography.
Course CSC 416 | Computer Game Design | 400 Level | 2nd Semester
Course Structure Introduction to the theory and practice of the process of designing games and playful experiences. Methods, concepts, techniques, and literature used in the design of games. Process-oriented strategy focusing on aspects such as: rapid prototyping, play testing, and design iteration using a player-centred approach. Business aspects of the industry that impact designs, including demographics, economic models, budgets, and marketing.
Course CSC 499 | Final Year Student's Project | 400 Level | 1st Semester
Course Structure An independent or group investigation of appropriate software, hardware, communication and networks or IT related problems in Computer Science is carried out under the supervision of a lecturer. Before registering, the student must submit a written proposal to the supervisor to review. The proposal should give a brief outline of the project, estimated schedule of completion, and computer resources needed. A formal written report is essential and an oral presentation may also be required.