COMPUTER & INFORMATION TECHNOLOGY (CIT)
L/R 591. Programming Languages and Techniques I. (C) Introduction to fundamental concepts of programming and computer science. Principles
of modern object-oriented programming languages:
abstraction, types, polymorphism, encapsulation,
and inheritance. Basic algorithmic techniques and
informal complexity analysis. Substantial programming
assignments in Java.
L/R 592. Mathematical Foundations of Computer Science. (C) Foundations: Sets, Functions, Summations, and Sequences. Introduction to algorithms.
Counting techniques: The pigeonhole principle, permutations
and combinations. Discrete probability. Selected
topics from Number theory and/or Graph theory.
593. Introduction to Computer Architecture. (C) Introduction to fundamental concepts of computer architecture. Programming in
C and at least one assembly language as a basis for
understanding machine instructions and subroutine
linkage conventions. Representation of numbers, characters
and other information at machine level, including
on virtual machines. Features of current operating
systems.
594. Programming Languages and Techniques II. (C) Prerequisite(s): CIT 591 or consent of the instructor. Basic data structures,
including lists, stacks, queues, hash tables, trees,
priority queues, and Java Collections. Algorithms,
algorithm types, and simple complexity analysis.
Development and implementation of program specifications. Software architecture and design methods, including modular
program development, correctness arguments, and testing
techniques. Concepts illustrated through extensive
programming assignments in Java.
L/R 595. Digital System Organization and Design. (C) Prerequisite(s): CIT 593 or equivalent. Introduction to fundamental building blocks of digital computer hardware such
as transistors, logic gates and components built from them, as a basis for understanding how a computer operates
at the hardware level. Basic networking, security, and other "under the hood" topics. Use of virtual
machines to simulate hardware.
L/R 596. Theory of Computation. (C) Prerequisite(s): CIT 592 or equivalent. Relations. Finite automata, regular languages, regular grammars, and applications.
Pushdown automatia, trees, context-free grammars, and applications. Turing machines. Introduction to computability
and complexity theory.
597. Programming Languages and Techniques III. (C) Prerequisite(s): CIT 591 or equivalent. Advanced Java programming and programming
tools, with emphasis on developing for the Internet.
Java topics will include serialization, synchronization,
reflection, advanced I/O, and servlets. This course
will cover current Internet-related technologies such as XML and JavaScript, and may include JDBC,UML, PHP,
SOAP, and others. Substantial programming assignments,
many in Java. May be taken by MCIT and CIS graduate
students.
|