This course analyzes issues associated with the implementation of
higher-level programming languages. Topics covered include: fundamental
concepts, functions, and structures of compilers, the interaction of
theory and practice, and using tools in building software. The course
includes a multi-person project on compiler design and implementation.
Detailed introduction to the basic hardware and software, architectural
components for computer communications in local area networks. The
components that are focused upon include understanding the basics of
computer networks, switching, routing, protocols and security.
Detailed exploration of the mathematical techniques used for the design
and analysis of computer algorithms. Topics include: the study of
computer algorithms for numeric and non-numeric problems; analysis of
time and space requirements of algorithms; correctness of algorithms and
NP-completeness.
This course is the study of the evolution of
computer architecture and the factors influencing the design of hardware
and software elements of computer systems. Topics may include:
instruction set design; processor micro-architecture and pipelining;
cache and virtual memory organizations; protection and sharing; I/O and
interrupts; in-order and out-of-order superscalar architectures; VLIW
machines; vector supercomputers; multithreaded architectures; symmetric
multiprocessors; and parallel computers.