Computer Systems Engineering

Computer Systems Engineering

CSE5341 3.0 Real-Time Systems: Theory Specification and verification techniques for real-time systems with many interacting components. Formal design of real-time systems using (a) programming languages with unambiguous semantics of time-related behaviour and (b) scheduling algorithms.

CSE5342 3.0 Real-Time Systems: Practice  Introduction to the correct use and applications of real-time programming languages. Examples of real-time programming languages are studied in detail and applied to the solution of typical real-time programming problems (e.g., communication networks, avionic systems and process control).

CSE5421 3.0 Operating System Design An operating system has four major components: process management, input/output, memory management, and the file system. This project-oriented course puts operating system principles into action. This course presents a practical approach to studying implementation aspects of operating systems. A series of projects is included, making it possible for students to acquire direct experience in the design and construction of operating system components. A student in this course must design and implement some components of an operating system and have each interact correctly with existing system software. The programming environment is C++ under Unix. At the end of this course, a student will be able to design and implement the basic components of operating systems.

CSE5422 3.0 Performance Evaluation of Computer Systems This course introduces the concept of modelling a computer system, using queuing theory techniques and simulation techniques, then it examines the practical applications of these concepts in some case studies. These case studies are chosen to have a practical impact.

CSE5431 3.0 Mobile Communications This course provides an overview of the latest technology, developments and trends in wireless mobile communications, and addresses the impact of wireless transmission and user mobility on the design and management of wireless mobile systems.

CSE5501 3.0 Computer Architecture This course presents the core concepts of computer architecture and design ideas embodied in many machines and emphasizes a quantitative approach to cost/performance tradeoffs. This course concentrates on uniprocessor systems.

CSE6117 3.0 Theory of Distributed Computing Can a given problem be solved in a distributed system? If so, how efficiently? This course investigates how the answers to these questions depend on aspects of the underlying distributed system including synchrony, fault-tolerance and the means of communication between processes. Topics include models of distributed systems, mutual exclusion, agreement problems, lower bounds and consensus hierarchy.

CSE6222 3.0 Coding and Information Theory This course introduces students to fundamentals of information theory, as well as methods for achieving information-theoretic results using source codes and channel codes. Students will learn Shannon’s source coding and channel coding theorems, as well as the mathematical machinery required to prove these and other information theoretic results. Students will also be exposed to source coding techniques, as well as channel coding techniques for state-of-the-art systems. Advanced topics such as multiterminal (Slepian-Wolf) source coding and rateless codes will also be covered, time permitting.

CSE6327 3.0 Multimedia Communications:Coding Standards and Networking The course introduces the coding, networking, and system technologies used in multimedia communications. In coding, compression standards including the ITU H.26X and ISO MPEGs and JPEGs are introduced. Issues involved in transmitting multimedia over ATM, wireless, and IP networks are discussed. (subject to approval)

CSE6341 3.0 Methods for Large-Scale Software Development This course studies the application of mathematical methods to the construction of large-scale software systems. It considers issues relevant to large-scale design and the application of mathematics. It involves a large-scale software project in which industrial-strength tools are applied.

CSE6342 3.0 Object Oriented Software Construction  This course will focus on the principles, notations, methods and tools needed for the production of quality maintainable software using the full power of object orientation. Main topics include: fundamental software engineering principles, how to specify code using abstract data types and classes, how to develop implementations seamlessly and reversibly from specifications, the production of reliable code via contracts, design methods (BON and UML) and formal methods for verifying the correctness of industrial strength programs.

CSE6351 3.0 Dynamic Systems A modern approach to the analysis and engineering applications of linear and nonlinear systems. Modeling and linearization of multi-input– multi-output dynamic physical systems. State-variable and transfer function matrices. Emphasis on linear and matrix algebra. Numerical matrix algebra and computational issues in solving systems of linear algebraic equations, singular value decomposition, eigenvalue-eigenvector and least-squares problems. Analytical and numerical solutions of systems of differential and difference equations. Structural properties of linear dynamic physical systems, including controllability, observability and stability. Canonical realizations, linear state-variable feedback controller and asymptotic observer design. Design and computer applications to electronic circuits, control engineering, dynamics and signal processing.

CSE6422 3.0 Parallel and Distributed Computing This course investigates fundamental problems in writing efficient and scalable parallel and distributed applications with emphasis on operating systems support and performance evaluation techniques.

CSE6423 3.0 Parallel Computing on Networks of Workstations The advent of high-speed low-cost networks is making clusters of workstations attractive as a platform for parallel computing. This course investigates strategies for exploiting parallelism on workstation clusters, with an emphasis on distributed shared memory (DSM). The course discussion will center on fundamental DSM issues such as cache coherence and memory consistency. Students will study some of the key work in this area, and learn how to build a distributed shared memory system. The course will involve implementation work on an actual DSM system running on a cluster of workstations, and weekly readings ofselected papers.

CSE6431 3.0 Software Re-Engineering Industrial software systems are usually large and complex, while knowledge of their structure is either lost or inadequately documented. This course presents techniques that aid the comprehension and design recovery of large software systems.

CSE6501 3.0 Introduction to Parallel Computer Architectures This course will introduce the basic concepts in parallel and non-von Neumann architectures. It covers the following topics: algorithm-architecture mapping, algorithm analysis, parallelism extractions, technology constrains, architecture design, and system development.

CSE6502 3.0 Computational Aspects of VLSI This course is on automated design of VLSI systems and application algorithms. It covers the Mead-Conway VLSI design methodology; area-time trade offs for VLSI oriented computation; layout algorithms; parallel network models, such as hypercube, shuffle-exchange and mesh-of-trees; systolic algorithms; VLSI design tools, such as circuit extraction, design rule checking, placement and routing.

CSE6590A 3.0 High-Performance Computer Networks This course focuses on high performance computer networks. It presents a comprehensive study of modern high speed communication networks that is capable of providing data, voice, and video services. It also covers mobile and wireless communication networks. Topics to be covered in this course may include:

  • principles of queueing theory (M/M/1, M/D/1, networks of queues, ..)
  • ATM switches architecture
  • ATM performance (buffer management, losses, admission policies, delay,..)
  • Optical links
  • Wireless networks
  • Multiple access techniques for wireless networks
  • Standards for wireless systems
  • Security and privacy
  • wireless/conventional internetworking