Courses

Prerequisite Chart of All Courses in Major

Comparison of Introductory Computer Science Courses

Click on a course number listed below to jump to the course description.

CS110 CS200 CS301 CS410 CS510 CS612 M160
CS115 CS253 CT310 CS414 CS514 CS614 M161
CS150 CS270 CT320 CS420 CS517 CS620 M229
CS155 CS314 CS430 CS518 CS635 M260
CS156 CS370 CS440 CS520 CS640 M261
CS157 CS451 CS530 CS641 ST301
CS160 CS453 CS533 CS653 ST309
CS161 CS454 CS540 CS656 Other
CS192 CS457 CS545 CS/EE658
CS460 CS551 CS/EE670
CS470 CS553 CS/EE674
CS475 CS556 CS675
CS481 CS557 CS680
CS486 CS560 CS692
CS495 CS570 CS695
CS498 CS575 CS696
  CS580 CS699
CS799


CS110: Personal Computing

Prerequisite: None

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


CS115: Computer Science Concepts and Practices

Prerequisite: HS Algebra, experience with PC's.

Development of computer science in the 20th Century. Central concepts of computer science: algorithm, recursion, implications of autonomous computation, limits of computability. Examples using programming. No credit toward Computer Science major.


CS150: Interactive Programming with Java

Prerequisite: some familiarity with PC's.

Introduction to object-oriented programming with Java; problem-solving, cre ating applets for Web pages, and graphical user interfaces. No credit toward Computer Science major requirements.


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, M118

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.


CS160: Foundations in Programming

Prerequisite: MCC118 with a C [2.0] or better. Credit not allowed for CSCC153 and CSCC160.

Introduction to computer theory, programming and systems. Sets, functions, logic. Procedural programming in Java. Computer and data models. Replaces CSCC153 starting Fall 2006.


CS161: Object-oriented Problem Solving

Prerequisite: CS160 with a C [2.0] or better, or CSCC153 with a C [2.0] or better; MATH141 or MATH155 or MATH160 or concurrent registration.

Fundamental object oriented concepts, inheritance, polymorphism, basic algorithms, linked lists, assertions, recursion, induction, counting. Replaces CS166 starting Spring 2007.


CS192: First-Year Seminar

Prerequisite: none.

An introduction to Colorado State University and the Computer Science Department.


CS200: Algorithms and Data Structures

Prerequisite: (CS153 and CS156) or CS161 (all with a C [2.0] or better); MATH160 or MATH141 or MATH155 (all with a C [2.0] or better).

Data structures; abstract data types, complexity analysis; sorting, searching; hashing; examples from operating systems and graphics.


CS253: Problem Solving with C++

Prerequisite: CS200, CS/M166, CS270.

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: CS161 with a C [2.0] or better; MATH160 with a C [2.0] or better, or MATH141 with a C [2.0] or better, or MATH155 with a C [2.0] or better; CS200 or concurrent registration.

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


CS301: Foundations of Computer Science

Prerequisite: CS200, CS/M166, M161, M229, CS253 or concurrent registration.

Formal languages, automata; algorithm-design, complexity classes; computability; process coordination; algorithms for artificial intelligence. Correctness; efficiency.


CT310: Web Development

Prerequisite: CSCC150 or CSCC153 or prior programming experience.

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


CT320: Network and System Administration

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

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


CS314: Software Development Methods

Prerequisite: CS253, CS/M166, CS200.

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


CS370: System Architecture and Software

Prerequisite: CS200 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: M229, CS314.

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

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: CS301

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


CS430: Database Systems

Fall, Spring

Prerequisite: CS314

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


CS440: Introduction to Artificial Intelligence

Fall

Prerequisite: CS253, CS301.

Symbolic computation through programming languages LISP and PROLOG; applications of symbolic computing in artificial intelligence.


CS451: Operating Systems

Spring

Prerequisite: CS370

Operating system design and implementation, file systems, distributed operating systems, case studies.


CS453: Introduction to Compiler Construction

Spring

Prerequisite: CS253, CS301.

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


CS454: Principles of Programming Languages

Prerequisite: CS253, CS301

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


CS457: Computer Networks and the Internet

Fall, Spring

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.


CS460: Embedded Systems

Fall

Prerequisite: CS370

Introduction to programming the processors embedded in electronic devices such as cell phones, digital cameras, and gameboys. Hardware description languages, industry embedded design kits.


CS470: Computer Architecture

Spring

Prerequisite: CS370

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

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


CS481: Programming Languages

Spring

Prerequisite: CS253 and CS301.

(experimental course) Programming language principles emphasizing language design concepts, semantics, and interpreters. Language features and programming paradigms, esp. functional 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: Computer Graphics

Spring

Prerequisite: CS410

Displaying 3D objects with realistic shading and lighting calculations. Hidden surface removal, Gourand and Phong shading, and ray tracing.


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 CS451.

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

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

Prerequisite: CS430

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


CS540: Artificial Intelligence

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.


CS551: Principles of Operating Systems

Summer Online Only

Prerequisite: CS451

Advanced topics in concurrency, deadlock protection, multiprocessor scheduling, computer system modeling, and virtual memory management.


CS553: Algorithmic Language Compilers

Fall

Prerequisite: CS420, CS453.

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


CS556: Computer Security

Fall

Prerequisite: CS451

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


CS557: Advanced Networking

Prerequisite: CS457

LAB/WAN technologies, congestion/flow control, traffic analysis, intra and inter-domain routing, multicast, overlays, P2P systems and quality of service.


CS560: Reconfigurable Computing

Prerequisite: CS/EE460

Custom computing on FPGAs; silicon compilation; models of fine grain application specific parallelism; dataflow; Kahn processes; systolic arrays.


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.


CS580: Advanced Networking (Experimental course. Permanent version likely in future.)

Prerequisite: CS457

Current research topics such as: LAN/WAN technologies, congestion/flow control, traffic analysis, intra-and inter-domain routing, multicase, overlays, P2P systems and quality of service.


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.


CS653: Topics in Programming Language Implementation

Prerequisite: CS553

Language implementation. Data dependence analysis; code generation.


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.


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 (A-F) var [1-4]

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

A) Data flow.
B) Performance evaluation and modeling.
C) Distributed systems.
D)Architecture of advanced systems.
Embedded and Reconfigurable Sytems
Optical Communication Networks
E) Computing arithmetic.
F) Microarchitecture


CS/EE674: 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.


CS680: 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.


CS692: Seminar [var]


CS695: Independent Study [var]


CS696: Group Study [var]


CS699: Thesis [var]


CS799: Dissertation [var]


 

Related Courses


M160: Calculus for Physical Scientists I

Prerequisite: M126; M124 or concurrent registraion; credit is allowed for only one of the following sequences: M141; M155, M255; M160, M161, M261.

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


M161: Calculus for Physical Scientists II

Prerequisite: M124 and M160; credit allowed for only one of the following sequences: M141; M155, M255; M160, M161, M261.

Differentiation and integration of transcendental functions, sequences, series.


M229: Matrices and Linear Equations

Prerequisite: M121

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


M260: Elementary Linear Algebra

Prerequisite: M126 and M229

Geometry and algebra of Rn, subspaces, linear independence, basis, dimension, solutions of linear systems, linear transformations and matrices.


M261: Calculus for Physical Scientists III

Prerequisite: M161; credit allowed for only one of the following sequences: M141; M155, M255; M160, M161, M261.

Vector functions, partial differentiation, cylindrical and spherical coordinates, multiple integrals, line integrals, Green's theorem.


ST301: Introduction to Statistical Methods

Prerequisite: M120 and M121; credit allowed for only one course: ST301, ST307/EH307, ST309, ST311.

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


ST309: Engineering Statistics

Prerequisite: M161; credit allowed for only one course: ST301, ST307/EH307, ST309, ST311.

Probability and distribution theory, estimation and testing, correlation and regression, applications to engineering and manufacturing.


 

Other Courses


CIT CS Workshop for Girls

A Computer Science workshop for 7th and 8th grade girls, supported by a grant from the Colorado Institute of Technology.