Computer and Information Technology (CIT)

CIT 590 Programming Languages and Techniques

Introduction to fundamental concepts of programming and computer science for students who have little or no experience in these areas. Principles of modern object-oriented programming languages: abstraction, types, polymorphism, encapsulation, and inheritance. Basic algorithmic techniques and informal complexity analysis. Graphical user interfaces. Substantial programming assignments in Python and Java. This course is for students who do not have an academic background in computer science and who are not pursuing the Master's in Computer Information Technology and who are not graduate students in the CIS Department.

One-term course offered either term

Activity: Lecture

1.0 Course Unit

CIT 591 Introduction to Software Development

Introduction to fundamental concepts of programming and computer science. Principles of modern object-oriented programming languages: abstraction, types, polymorphism, encapsulation, inheritance, and interfaces. This course will also focus on best practices and aspects of software development such as software design, software testing, pair programming, version control, and using IDEs. Substantial programming assignments.

One-term course offered either term

Activity: Lecture

1.0 Course Unit

CIT 592 Mathematical Foundations of Computer Science

This course introduces you to math concepts that form the backbone of the majority of computer science. Topics covered include sets, functions, permutations and combinations, discrete probability, expectation, mathematical Induction and graph theory. The goal of the course is to ensure that students are comfortable enough with the math required for most of the CIS electives. CIS 502 and CIT596 heavily rely on concepts taught in this course.

One-term course offered either term

Activity: Lecture

1.0 Course Unit

CIT 593 Introduction to Computer Systems

This course provides an introduction to fundamental concepts of computer systems and computer architecture. You will learn the C programming language and an instruction set (machine language) as a basis for understanding how computers represent data, process information, and execute programs. The course also focuses on the Unix environment and includes a weekly hands-on lab session.

One-term course offered either term

Activity: Lecture

1.0 Course Unit

CIT 594 Data Structures and Sofware Design

This course will focus on data structures, software design, and advanced Java. The course starts off with an introduction to data structures and basics of the analysis of algorithms. Important data structures covered will include arrays, lists, stacks, queues, trees, hash maps, and graphs. The course will also focus on software design and advanced Java topics such as software architectures, design patterns, networking, multithreading, and graphics. We will use Java for the entire course.

This course builds on your knowledge of C and focuses on systems programming for Linux, specifically the libraries that programmers use for threading and concurrency, synchronization, inter-process communication, and networking. The course also introduces the C++ programming language, and covers important concepts in modern operating systems, including processes, scheduling, caching, and virtual memory. After completing this course, you will have the requisite knowledge and experience for systems-focused CIS graduate-level electives.

This course focuses primarily on the design and analysis of algorithms. We will begin with sorting and searching algorithms and then spend most of the course on graph algorithms. In order to study graph algorithms, general algorithm design patterns like dynamic programming and greedy algorithms will be introduced. A section of this course is also devoted to understanding NP-Completeness.