Courses


Prerequisite Chart of All Courses in Major

Comparison of Introductory Computer Science Courses


Course Listing

Click on a course level below to jump to course offerings and descriptions for that level. Scroll down the page for the comprehensive list of computer science courses.


100-Level Courses: CS110, CS155, CS156, CS157, CS163, CS164, CS165,

CS110: Personal Computing

Prerequisite: None

Hardware/software concepts, Internet services, OS commands, electronic presentations, spreadsheets, databases, programming concepts. No credit toward Computer Science major.


CS150: Interactive Programming with Java

Prerequisite: Placement into MATH117

Logic, programming, and interaction with the operating system will be interleaved to show how systems and applications software complement each other.


CS155: Introduction to Unix

Prerequisite: none.

Unix shell commands, utilities (editors, sorting, file management), shell scripting. Five week course, 1 sem. hr.


CS156: Introduction to C Programming

Prerequisite: CS155, MATH118

Basic elements of language structure, data types, expressions, program control flow, and modularity. Five week course, 1 sem. hr.


CS157: Introduction to C Programming II

Prerequisite: CS156

More basic data types, function usage and strings. Arrays, user-defined types and structures, enumerated types, recursion, dynamic storage allocation. Five week course, 1 sem. hr.


CS163: Java (CS1) No Prior Programming

Prerequisite: MATH118, MATH124 with a C or better

Computer programming in Java for students without previous programming experience. Topics include variables, assignment, expressions, operators, booleans, conditionals, characters and strings, control loops, arrays, objects and classes, file input/output, interfaces, recursion, lists, and sorting.


CS164: Java (CS1) Prior Programming

Prerequisite: MATH118, MATH124 with a C or better

Computer programming in Java for students with limited programming experience. Problem decomposition for good design; expressions, operators, booleans, conditionals, characters and strings, control loops, arrays, objects and classes, file input/output, interfaces, recursion, lists, and sorting.


CS165: Java (CS2) Data Structures and Algorithms

Prerequisite: CS163 or CS164 with a C or better, MATH160 or concurrent registration

Object oriented concepts, assertions, inheritance, polymorphism, algorithms and data structures using Java.


200-Level Courses: CS220, CS253,CS270

CS220: Discrete Structures and Their Applications

Prerequisite: CS165 with a C [2.0] or better; MATH160 with a C [2.0] or better.

Integer representations and properties, propositions, predicates, sets, functions, program proofs, induction, counting, complexity; Python implementations of these concepts.


CS253: Problem Solving with C++

Prerequisite: CS220, CS270, both with a C [2.0] or better.

C++ programming techniques for experienced programmers. Unix tools for editing, compiling, debugging and testing C++ programs, and the process of solving programming problems.


CS270: Computer Organization

Prerequisite: CS165 with a C [2.0] or better; MATH160 with a C [2.0] or better; CS220 or concurrent registration.

Representation of data, arithmetic, assembly language, digital logic, digital systems, memory organization and architecture.


300-Level Courses: CT310, CS314, CS320, CT320, CS356, CS370

CT310: Web Development

Prerequisite: CS165

Core web development techniques covering five popular languages to develop a fully functional web site including database access, security issues, domain names and hosting.


CS314: Software Engineering

Prerequisite: CS253, CS220, both with a C [2.0] or better.

Methods used to develop large-scale software projects in industry, emphasizing design, implementation, and testing.


CS320: Algorithms: Theory and Practice

Prerequisite: CS220, MATH161, and MATH229 or MATH369, all passed with a C [2.0] or better.

Design, implementation, and efficiency analysis of advanced data structures and data access algorithms, and use of these algorithms in applications.


CT320: Network and System Administration

Prerequisite: CS253 or (CS155 and CS156). Credit not allowed for both CT320 and CIS350.

Installation of network and operating system services, management and support; upgrades, security, backups.


CS356: System Security

Prerequisite: CS220, CS270 or ECE251, CS253, STAT301 or STAT315 or STAT201 or STAT204, all passed with a C [2.0] or better.

Computer and system security, authentication, access control, malicious software, and software security.


CS370: Operating Systems

Prerequisite: CS2220 with a C [2.0] or better, CS270 with a C [2.0] or better.

Introduction to operating systems and necessary hardware support, including memory organization, I/O control, multitasking; process control and coordination, and resource management.


CS410: Introduction to Computer Graphics

Fall

Prerequisite: MATH229, CS253, both passed with a C [2.0] or better.

Graphics hardware and software. Drawing simple objects. Coordinate transformations in 2D and 3D. Modeling and viewing complex 2D and 3D objects.


CS414: Object-oriented Design

Fall

Prerequisite: CS314, passed with a C [2.0] or better.

Object-oriented methods for large-scale software systems. Software design for reuse using patterns. WWW applications in languages such as Java.


CS420: Introduction to the Analysis of Algorithms

Fall

Prerequisite: CS320, passed with a C [2.0] or better.

Finite state machines, push-down machines, Turing machines, grammars. Computability, orders of complexity, NP completeness, approximate algorithms.


CS425: Introduction to Bioinformatics Algorithms

Prerequisite: CS320 passed with a C or better.

Application and implementation of algorithmic techniques for problems in computational biology, including: dynamic programming, graph algorithms, divide-and-conquer, and HMMs.


CS430: Database Systems

Spring, Summer

Prerequisite: CS314 or CS370 passed with a C [2.0] or better.

Database analysis, design, administration, implementation, hierarchical, network relational models; data sub-languages; query facilities.


CS435: Introduction to Big Data

Spring

Prerequisite: CS370 passed with a C [2.0] or better.

Fundamental issues in Big Data: data organization, storage, retrieval, analytics, and knowledge discovery at scale.


CS440: Introduction to Artificial Intelligence

Fall

Prerequisite: CS253, CS320, both passed with a C [2.0] or better.

Concepts, representations, and algorithms for applications of problem solving search, logical reasoning and machine learning.


CS453: Introduction to Compiler Construction

Spring

Prerequisite: CS253, CS314, both passed with a C [2.0] or better.

Functional components of a compiler: modules, interfaces, lexical and syntax analysis, error recovery, resource allocation, code generation.


CS454: Principles of Programming Languages

Spring

Prerequisite: CS253, CS320, both passed with a C [2.0] or better.

Language design concepts; functional programming; interpreter support for environments, procedures, recursion, types, objects; language paradigms.


CS455: Introduction to Distributed Systems

Prerequisite: CS370, passed with a C [2.0] or better.

Fundamentals of distributed systems: concurrency, thread pools, scalable servers, graphs, data formats, transactions, secure systems, and overlays.


CS457: Computer Networks and the Internet

Fall

Prerequisite: CS370 with a C [2.0] or better; STAT301 or STAT/ECE303 or STAT/ERHS307 or STAT309 or STAT315 or STAT311 (all with a C [2.0] or better); CS253 with a C [2.0] or better.

Principles of communications, local area networks, communications protocols, TCP/IP, and the Internet.


CS464: Principles of Human-Computer Interaction

Spring

Prerequisite: CS253 passed with a C or better.

History and trends in Human-Computer Interaction; user-centered design techniques; prototyping; experimental methods for the evaluation of technology.


CS470: Computer Architecture

Spring

Prerequisite: CS370, passed with a C [2.0] or better.

Instruction sets. Control unit: hardwired and microprogramming. Memory systems. Computer arithmetic. I/O and bus control. Performance evaluation. Pipelining. RISC processors.


CS475: Parallel Programming

Fall

Prerequisite: CS370, passed with a C [2.0] or better.

Parallel programming techniques for shared-memory and message-passing systems; process synchronization, communication; example languages.


CS486: Practicum var [1-4]

Maximum of twelve (12) credits allowed for any combination of CS486, CS495, CS496(A-H), and CS498. Supervised work experience in approved Computer Science setting with periodic consultation of faculty.


CS495: Independent Study [var]

Maximum of twelve (12) credits allowed for any combination of CS486, CS495, CS496(A-H), and CS498.


CS498: Research var [1-4]

Maximum of twelve (12) credits allowed for any combination of CS486, CS495, CS496(A-H), and CS498. Supervised research in Computer Science.


CS510: Image Computation

Spring

Prerequisite: CS410

Image generation theory and implementation, image manipulation/interpretation. Ray tracing, geometric and photometric manipulation, image matching.


CS514: Software Product and Process Evaluation

Fall

Prerequisite: CS314, ST301 or ST309, CS414 or concurrent registration.

Software development process modeling and evaluation; software metrics, testing, verification, validation; experimental methods of software engineering.


CS517: Software Specification and Design

Spring

Prerequisite: CS414

Rigorous techniques for modeling, specifying, and analyzing software requirements and designs; reusable software development.


CS518: Distributed Software System Development

Spring

Prerequisite: CS414 and CS370.

Principles of developing distributed systems; middleware technologies and techniques for building complex distributed component-based systems.


CS520: Analysis of Algorithms

Spring

Prerequisite: CS420

Orders of magnitude, asymptotic complexity, lower bounds, recurrence equations; algorithmic methods, P, NP completeness; intractable problems, parallel algorithms.


CS530: Fault-Tolerant Computing

Spring

Prerequisite: CS370

Techniques for achieving high reliability and fault-tolerance in computing systems including fault modeling and testing, reliability evaluation, and use of redundancy for fault-tolerance.


CS533: Database Management Systems

Fall

Prerequisite: CS430

Theory and implementation of concurrency control, recovery, and query processing as it applies to centralized and distributed systems.


CS535: Big Data

Fall

Prerequisite: CS435

Fundamental issues in Big Data: data organization, storage, retrieval, analytics, and knowledge discovery at scale.


CS540: Artificial Intelligence

Spring

Prerequisite: CS440

Knowledge-based systems, representation, automated logic, planning, neural networks, genetic algorithms, natural language, vision, machine learning.


CS545: Machine Learning

Fall

Prerequisite: CS440

A survey of computational methods that allow computers to learn; neural networks, decision trees, genetic algorithms, bagging and boosting.


CS548: Bioinformatics Algorithms

Prerequisite: STAT 301 or STAT 301 or STAT 315; knowledge of a contemporary programming language

Computational methods for analysis of DNA/protein sequences and other biological data.


CS553: Algorithmic Language Compilers

Fall

Prerequisite: CS453

Compiler construction; lexical scanner generators, parser generators, dataflow analysis, optimization.


CS555: Distributed Systems

Prerequisite: CS370 with a B or better.

Principles, paradigms, protocols and algorithms underlying modern distributed systems.


CS556: Computer Security

Fall

Prerequisite: CS356 or CS455

Topics in computer security: Concepts, threats, risks. Access control models, trusted systems, cryptography, authentication.


CS557: Advanced Networking

Spring

Prerequisite: CS457

Network technologies, congestion/flow control, traffic analysis, intra and inter-domain routing, multicast, P2P systems, content centric networks, and new network architectures.


CS560: Foundations of Fine-Grain Parallelism

Prerequisite: CS460/ECE460 or CS475

Programming novel architectures; performance tuning; automatic parallelization; program transformation; polyhedral model; equational programming.


CS561/ECE561: Hardware/Software Design of Embedded Systems

Prerequisite: ECE251 or ECE452 or CS270 or CS470

Challenges and state of the art in embedded systems design including system level modeling, design space exploration, hardware-software partitioning, high level systhesis.


CS570: Advanced Computer Architecture

Fall

Prerequisite: CS470

Pipelined CPU design. Superscalar architectures, and instruction level parallelism. Cache and memory hierarchy design. Storage systems. Computer performance evaluation.


CS575: Parallel Processing

Spring

Prerequisite: CS475

Parallel and distributed computing models, algorithms, mapping and performance evaluations, parallel computing tools and applications.


CS612: Topics in Computer Graphics

Fall

Prerequisite: CS510

Computer graphics research topics.


CS614: Advanced Topics in Software Engineering (A-F)

Fall, Spring

Prerequisite: CS514

Research topics in software engineering. A) Specification and design. B) Testing and verification. C) Software environments and tools. D) Software measurement, analysis and evaluation. E) Software process. F) Software reliability and fault tolerance.


CS620: Topics in Computing Theory (A-E) var [1-4]

Prerequisite: CS520 or written consent of instructor.

A) Algorithms. B) Information theory. C) Logic in computing. D) Formal languages and automata theory. E) Mathematical foundations.


CS635: Advanced Fault-Tolerant Computing

Prerequisite: CS530

Advanced topics and recent developments in high reliability and fault-tolerant systems.


CS640: Advanced Artificial Intelligence I. F.

Fall

Prerequisite: CS540

Research topics in artificial intelligence including genetic algorithms; neural networks and connectionist models; machine learning; planning and automated reasoning.


CS641: Advanced Artificial Intelligence II. S.

Spring

Prerequisite: CS640

Advanced research topics in artificial intelligence.


CS645: Advanced Machine Learning: Neural Networks

Spring

Prerequisite: CS 545 with a C or better.

Study of machine learning research literature and implementations of algorithms for neural networks and reinforcement learning.


CS646: Machine Learning in Bioinformatics

Prerequisite: CS545 or STAT560

Recent research on the applications of machine learning in bioinformatics.


CS653: Topics in Programming Language Implementation

Prerequisite: CS553

Language implementation. Data dependence analysis; code generation.


CS655: Advanced Topics in Distributed Systems

Prerequisite: CS555

Advanced research topics in distributed systems.


CS656: Advanced Topics in Computer Security (A-C)

Prerequisite: CS556 or written consent of instructor.

Advanced research topics in computer security. A) Formal Models of Computer Security. B) Models for Privacy and Application Security. C) Network Security.


CS657: Advanced Topics in Networking

Prerequisite: CS557 or consent of instructor.

Advanced networking topics such as network security, measurements, routing, protocol design, peer-to-peer systems, DSN.


CS/EE658: Internet Engineering

Prerequisite: EE456 or CS457 or written consent of instructor.

Link technologies, multiple access, hardware and software for internetworks routing, switching flow control, multicast, performance, and applications.


CS/EE670: Topics in Architecture/Systems (B-D) var [1-4]

Prerequisite: CS570 or EE554 or written consent of instructor. Credit is not allowed for both CS670(A-F) and ECE670(A-F).

B) Performance evaluation and modeling.
C) Distributed systems:

Special Topics in Architecture/Systems {Distributed Systems}: Fall 2009

Special Topics in Architecture/Systems (Distributed Systems} (Heterogeneous Computing): Spring 2010

D) Architecture of advanced systems:

Optical Communication Networks


CS/ECE674: Heterogenous Computing

Prerequisite: EE550 or EE554 or CS570 or CS575 or written consent of instructor.

The study of the allocation of resources to tasks in high performance parallel and distributed heterogeneous computing systems.


CS675: Advanced Parallel Computing

Prerequisite: Consent of Instructor

Advanced topics in parallel computing, computaional models, parallel languages and algorithms, distributed simulation, Internet and mobile computing, parallel search.


CS692: Seminar [var]


CS695: Independent Study [var]


CS696: Group Study [var]


CS699: (Masters) Thesis [var]


700-Level Courses: CS793, CS799

CS793: Research Seminar


CS799: (PhD) Dissertation [var]


Related Courses


MATH160: Calculus for Physical Scientists I

Prerequisite: MATH126; MATH124, credit is allowed for only one of the following sequences: MATH141; MATH155, MATH255; MATH160, MATH161, MATH261.

Limits, continuity, differentiation, and integration of elementary functions with applications; conic sections.


MATH161: Calculus for Physical Scientists II

Prerequisite: MATH160; credit allowed for only one of the following sequences: MATH141; MATH155, MATH255; MATH160, MATH161, MATH261.

Differentiation and integration of transcendental functions, sequences, series.


MATH229: Matrices and Linear Equations

Prerequisite: MATH160 or MATH141 or MATH155.

Solutions of systems of linear equations, augmented matrix, row reduction, matrix operations, inverses, determinants, eigenvalues and eigenvectors.


STAT301: Introduction to Statistical Methods

Prerequisite: MATH117; credit allowed for only one course: STAT301, STAT307/EH307, STAT309, STAT311.

Techniques in statistical inference; confidence intervals, hypothesis tests, simple correlation and regression, one-way analysis of variance.