Courses |
| 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.
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.
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.
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.
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.
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.
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.
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.
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.
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
Instruction sets. Control unit: hardwired and microprogramming. Memory systems. Computer arithmetic. I/O and bus control. Performance evaluation. Pipelining. RISC processors.
Fall
Prerequisite: CS370
Parallel programming techniques for shared-memory and message-passing systems; process synchronization, communication; example 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.
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
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.
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.
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.
Fall
Prerequisite: CS451
Topics in computer security: Concepts, threats, risks. Access control models, trusted systems, cryptography, authentication.
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.
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.
CS695: Independent Study [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.
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
A Computer Science workshop for 7th and 8th grade girls, supported by a grant from the Colorado Institute of Technology.