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.