Computers are changing our lives; this is a course for any student interested in learning about computing. It surveys many fields of computing...
This course surveys current best practices for implementing attractive, usable, secure and maintainable web applications. Other issues considered...
Introduction to algorithms: their definition, design, coding, and execution on computers. Intended for students who have no programming experience....
Introduction to tools and techniques for creating 2D computer animations. Introduction to animation software (e.g., Flash) and scripting languages...
Introduction to design and analysis of algorithms.
Introduction to object-oriented design, architecture, and programming. Use of packages, class libraries, and interfaces. Encapsulation and...
Introduction to mathematical discourse and proof methods. Sets, functions, sequences, and relations. Properties of the integers. Introduction to graph...
Elements of mathematical logic with computing applications. Formal proof systems for propositional and predicate logic. Interpretations, validity, and...
Basic concepts of Unix-like systems. Shells and scripting. System-level programming in the C language. Software development tools and techniques. ...
The descriptive levels of computer architecture. Instruction-set architectures. Assembly Language. Data representation. Support for operating-system...
Introduction to techniques for specifying the behaviour of software, with applications of these techniques to design, verification and construction of...
Design and implementation of advanced data structures and related algorithms, including correctness and complexity analysis.
Review of imperative programming features. Introduction to other widely used programming paradigms. Functional programming languages, such as LISP and...
Introduction to scientific computing:
Introduction to management of small and medium-scale software projects. Advanced programming methodology using the programming language C++. Includes...
Abstractions and patterns of interactions and relationships among modules. Design recovery; relationship of architecture to requirements and testing. ...
Layered operating systems for conventional shared memory computers: concurrent processes. Synchronization and communication. Concurrent algorithms....
Developing usable software requires that human factors be considered throughout the design and development process. This course introduces a series of...
Validation of software throughout the life cycle. Comparative effectiveness in defect removal of formal methods (proofs of correctness), inspection...
Concepts of computer-integrated surgery systems and underlying techniques such as medical-image computing, robotics, and virtual reality, learned...