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

CT310

CS410

CS510

CS612

M160

CS122

CS253

CT320

CS414

CS514

CS614

M161

CS150

CS270

CS314

CS420

CS517

CS620

M229

CS155

CS320

CS425

CS518

CS635

ST301

CS156

CS356

CS430

CS520

CS640

 

CS157

CS370

CS440

CS530

CS641

CS160

CS451

CS533

CS646

CS161

CS453

CS540

CS653

 

CS192

CS454

CS545

CS655

CS455

CS548

CS656

CS457

CS551

CS657

CS460

CS553

CS/EE658

CS470

CS555

CS/ECE670

CS475

CS556

CS/ECE674

CS486

CS557

CS675

CS495

CS560

CS692

CS498

CS/ECE561

CS695

CS570

CS696

CS575

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.


CS122: Theory for Introductory Programming

Prerequisite: MATH118; concurrent registration in CS161. Credit not allowed for both CS122 and MATH122, credit not allowed for students who have completed CS160

Set theory, definitions operations, Venn diagrams, power sets, propositional logic and proofs. Functions; loop invariants. (This is a bridge course for students who have completed an intro Java programming course not containing this material and for students with AP credit in computer science.)


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


CS160: Foundations in Programming

Prerequisite: MATH118 with a C [2.0] or better.

Introduction to computer theory, programming and systems. Sets, functions, logic. Procedural programming in Java. Computer and data models.


CS161: Object-oriented Problem Solving

Prerequisite: CS160 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.


CS192: First-Year Seminar

Prerequisite: none.

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


CS200: Algorithms and Data Structures

Prerequisite: CS161 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, 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: 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.


CT310: Web Development

Prerequisite: CS200

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 Development Methods

Prerequisite: CS253, CS200, all 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: CS200, 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: CS200, 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: 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: 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

Fall, Spring

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

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


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.


CS451: Operating Systems

Spring

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

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


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

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.


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.


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

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


CS555: Distributed Systems

Prerequisite: CS451 with a B or better.

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


CS556: Computer Security

Fall

Prerequisite: CS451

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.


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: Thesis [var]


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