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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Maximum of twelve (12) credits allowed for any combination of CS486, CS495, CS496(A-H), and CS498. Supervised research in Computer Science.
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.
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.
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.
Prerequisite: CS451 with a B or better.
Principles, paradigms, protocols and algorithms underlying modern distributed systems.
Fall
Prerequisite: CS451
Topics in computer security: Concepts, threats, risks. Access control models, trusted systems, cryptography, authentication.
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.
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.
CS695: Independent Study [var]
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.