100-Level Courses
C S 100 : Fundamentals of Computing and Information.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter |
| DESCRIPTION:  | Computing, information structures, programming principles, Internet, World Wide Web, text, spreadsheets, data representations for images, sound and video. |
| NOTE: | For nonmajors. |
C S 124 : (C S-EC En) Introduction to Computer Systems.
(3:3:2)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter; Spring; Summer |
| PREREQUISITE: | C S 142 or concurrent enrollment. |
| DESCRIPTION:  | How a computer works, from hardware to high-level programming. Logic circuits, computer instructions, assembly language, binary arithmetic, C programming, program translation, data structures, and algorithm analysis. |
C S 142 : Introduction to Computer Programming.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter; Spring |
| PREREQUISITE: | Knowledge of algebra. |
| DESCRIPTION:  | Introduction to object-oriented program design and development. Principles of algorithm formulation and implementation. |
200-Level Courses
C S 235 : Data Structures and Algorithms.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter; Spring; Summer |
| PREREQUISITE: | C S 142 |
| DESCRIPTION:  | Fundamental data structures and algorithms of computer science; basic algorithm analysis; recursion; sorting and searching; lists, stacks, queues, trees, hashing; object-oriented data abstraction. |
C S 236 : Discrete Structures.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter; Summer |
| PREREQUISITE: | C S 235 |
| DESCRIPTION:  | Introduction to grammars and parsing; predicate and propositional logic; proof techniques; sets, functions, relations, relational data model; graphs and graph algorithms. |
C S 240 : Advanced Programming Concepts.
(4:3:1)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter; Spring; Summer |
| PREREQUISITE: | C S 236 |
| DESCRIPTION:  | Advanced software development with an object-oriented focus. Development and testing of several 1500 to 2000 line modules from formal specifications. UNIX and C++ environment. |
C S 252 : Introduction to Computational Theory.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter |
| PREREQUISITE: | C S 236 or concurrent enrollment. |
| DESCRIPTION:  | Finite state automata, regular languages, lexical analysis; push-down automata, context-free languages, parsing; Turing machines and unrestricted grammars; computability complexity, NP-completeness. |
300-Level Courses
C S 312 : Algorithm Analysis.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter; Spring |
| PREREQUISITE: | C S 240 & C S 252 |
| DESCRIPTION:  | Analysis of algorithms including searching, sorting, graphs, and trees. |
C S 330 : Concepts of Programming Languages.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter |
| PREREQUISITE: | C S 240 |
| DESCRIPTION:  | Principles and concepts characterizing high-level computer programming languages, process and data abstration, encapsulation, inheritance, functional programming, logic programming, scanners, and parsers. |
C S 340 : Software Design and Testing.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter; Spring; Summer |
| PREREQUISITE: | C S 240 |
| DESCRIPTION:  | Principles of software design, design patterns, design representation, refactoring. Principles of software quality assurance and testing. Development and testing tools. |
C S 345 : Operating Systems Design.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter; Summer |
| PREREQUISITE: | C S 124 & C S 240 |
| DESCRIPTION:  | Principles and concepts of operating systems design and the implementation of an operating system. |
C S 360 : Internet Programming.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter |
| PREREQUISITE: | C S 240 |
| DESCRIPTION:  | Internet application programming, including sockets, threads, CGI, database, e-commerce, Web services. |
400-Level Courses
C S 404 : Ethics and Computers in Society.
(2:2:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter |
| PREREQUISITE: | C S 240 & ENGL 316; Junior-senior status. |
| DESCRIPTION:  | Societal impact of computer technology, the computer scientist's place in society, ethical issues. Reading, discussion, and writing seminar. |
C S 405 : Creating and Managing a Software Business.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter |
| PREREQUISITE: | C S 240 & ENGL 316 |
| DESCRIPTION:  | Entrepreneurship, idea/opportunity generation, strategic planning, legal organization, product development, marketing/sales, customer support, fund raising, and effective management. |
C S 412 : Linear Programming and Convex Optimization.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Winter |
| PREREQUISITE: | C S 312, Math 313, or instructor's consent. |
| DESCRIPTION:  | Optimization, problem formulation, and solution algorithms, including simplex and interior point methods. Applications from control, data mining, finance, game theory, learning, network flow, operations research, and statistical estimation. |
C S 418 : Bioinformatics.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | On Demand |
| PREREQUISITE: | C S 312 |
| DESCRIPTION:  | Computational methods for analyzing biological systems. Dynamic programming, Markov models, Neural Networks, and Bayesian analysis are used to predict secondary structure, tertiary structure, and active sites for drug docking given molecular DNA sequence data. |
C S 431 : Algorithmic Languages and Compilers.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| PREREQUISITE: | C S 330 & C S 340 |
| DESCRIPTION:  | Formal description of algorithmic languages and techniques used in their compilation: semantics, ambiguities, procedures, replication, iteration, recursion. |
C S 450 : Introduction to Digital Signal and Image Processing.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter |
| PREREQUISITE: | C S 312 & MATH 313 & STAT 121 |
| DESCRIPTION:  | One- and two-dimensional signal-processing fundamentals, including sampling, noise, transforms, filtering, enhancement, and compression. Hands-on experimentation with speech, music, still images, and full-motion video. |
C S 452 : Database Modeling Concepts.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall |
| PREREQUISITE: | C S 340 & C S 360 |
| DESCRIPTION:  | Database models: relational, deductive, object-oriented. Integrity constraints, query languages, database design. |
C S 453 : Fundamentals of Information Retrieval.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Winter |
| PREREQUISITE: | C S 360 |
| DESCRIPTION:  | Concepts and terminology of information retrieval (IR) systems. Design methodologies and issues. Fundamental IR models examined: Boolean, Vector Space, Probabilistic models, and evaluation strategies. |
C S 456 : Introduction to User Interface Software.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall |
| PREREQUISITE: | C S 340 |
| DESCRIPTION:  | Introduction to software architectures and techniques for graphical user interfaces. Input devices, windowing systems, event-driven programming, interactive geometry. |
C S 460 : Computer Communications and Networking.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Winter |
| PREREQUISITE: | C S 340 & C S 360 |
| DESCRIPTION:  | Introduction to data communications and computer networking. Communications fundamentals, computer networks, software, architecture, telecommunications, regulation, standards. |
C S 462 : Large-Scale Distributed System Design.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Winter |
| PREREQUISITE: | C S 340 & C S 360 |
| DESCRIPTION:  | Designing and implementing client-server enterprise applications. Web servers, application servers, database connectivity, remote procedure calls, transactions, messaging, directory, naming services, threads, security, data formats. |
C S 465 : Computer Security.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall |
| PREREQUISITE: | C S 360 or concurrent enrollment. |
| DESCRIPTION:  | Introduction to computer security fundamentals: confidentiality, integrity, authentication, and access control. Secret key and public key cryptography, network security protocols, viruses, and fire walls. |
C S 470 : Introduction to Artificial Intelligence.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Spring |
| PREREQUISITE: | C S 312 & MATH 313 & STAT 121 |
| DESCRIPTION:  | Introduction to core areas of artifical intelligence; intelligent agents, problem solving and search, knowledge-based systems and inference, planning, uncertainty, learning, and perception. |
C S 478 : Tools for Machine Learning and Data Mining.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall; Winter |
| PREREQUISITE: | C S 312 & MATH 313 & STAT 121 |
| DESCRIPTION:  | Machine learning and data mining models and other mechanisms allowing computers to learn and find knowledge from data. |
C S 479 : Natural Language Processing.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| PREREQUISITE: | C S 312 & STAT 121 |
| RECOMMENDED: | Ling 330. |
| DESCRIPTION:  | Introduction to natural language processing (NLP). Relevant problems include web search, speech recognition, machine translation, spam filtering, text classification, question answering, spell checking. Building real tools, understanding human language, applying techniques beyond NLP. |
C S 484 : Parallel Processing.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall |
| PREREQUISITE: | C S 360 |
| DESCRIPTION:  | Theoretical and practical study of parallel processing including multi-core, fine-grained, and clustered architectures, parallel programming languages, and parallel algorithms. |
500-Level Graduate Courses (available to advanced undergraduates)
C S 500 : (C S-Chem-Geol-Math-MthEd-Phscs-Stat) Business Career Essentials in Science and Math.
(1.5:1.5:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Winter |
| DESCRIPTION:  | Introduction for science, math, and statistics majors to careers in industry. Project planning, oral and written business presentations, business accounting, and technology readiness. |
C S 513 : Robust Control.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| PREREQUISITE: | Math 313 or equivalent. |
| RECOMMENDED: | C S 312 and 412; Math 334; or equivalents. |
| DESCRIPTION:  | Introduction to the analysis and design of feedback systems guaranteed to perform well in spite of model uncertainty. |
C S 557 : Computer-Aided Geometric Design.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall |
| PREREQUISITE: | C S 240, Math 343; or equivalents. |
| DESCRIPTION:  | Free-form curves and surfaces; mathematical theory and algorithms. Bezier and B-spline curves and surfaces, subdivision surfaces, T-splines, free-form deformation, and intersection algorithms. Several programming projects. |
C S 586 : Multiprocessor Programming and Verification.
(3:3:0)(Credit Hours:Lecture Hours:Lab Hours)| WHEN TAUGHT: | Fall |
| DESCRIPTION:  | The theory and practice of writing and verifying programs for multiprocessor and multi-core systems. |
| NOTE: | Students must have a strong foundation in complexity theory, discrete mathematics, and foundational programming skills for this course. |