Courses

This page gives basic information for CS courses, and also allows you to view the full list of classes for a given term. To view the full list of CS classes, select the term from the list below and click "Submit". The official descriptions and prerequisites for each course can be viewed in the university catalog at the following links.

Schedule of Courses

Note that for future terms, some courses may have the department chairperson listed as the instructor. The chairperson is listed as the instructor for any course if we do not know yet who the instructor will be.

Schedule of CS courses Choose which term  

Course Sequencing and Websites

The recommend order to take courses in is listed on the advising pages for undergraduates and graduate students. For undergraduate courses, the prerequisites are illustrated in the CS undergraduate course prereq map. For graduate courses, see the CS grad couse prereq map.

For each course, an indication is given whether the course is normally offered in the fall, spring, summer, or some combination. If there are no "Y" for a course, it is offered as needed. For courses listed as "even" or "fall", the course is offered only in even (or odd) numbered years. All courses are 3 credit hours unless otherwise noted. Some course numbers below are linked to documents giving a description of what material is covered by default in the course (along with links to standard references).

Note: for each course, the most recent offering of the course which has a publicly available website is listed here. Some courses exclusively use the university's blackboard website. We make no promises that the following links will work forever, but they at least are kept current while the courses are being offered.

Default content See Core Course Content below for brief notes on what the most important content is for the core courses. For a longer list of what typically goes into these courses, you can look at the spreadsheet with all ACM recommended learning outcomes for CS

Course Name Fall Spring Summer Course website(s) Lanuage(s)
SH 199Summer Honors (for high school students) Y 2016, 2017
GH 101General Honors (on a CS topic) YY details coming soon
CS 101Fundamentals of Computing YY model
CS 110Fast Track Programming (1-3 hrs) model C or Python
CS 151Introduction to Computer Science YYY Baker, Kinne, Rafiey, Sternfeld Javascript
CS 170Web Programming YYY Baker, Kinne html/css/javascript
CS 201Computer Science I YYY Exoo, Kinne, Sternfeld C
CS 202Computer Science II Y Exoo, Kinne C++
CS 220Java Programming Kinne Java
CS 256Principles of Structured Design YY Baker, Basavaraj C
CS 260Object Oriented Programming YY Baker, Carrillo, Sternfeld Processing/Java
CS 303Discrete Structures Y Egri
CS 399Cooperative Professional Experience
CS 420/520Theory of Computation Y Kinne, Exoo Python
CS 421/521Formal Methods Y ACL2, Clausal Logic, Haskell, Prolog
CS 440/540Graphics Programming even Exoo, Kinne C/C++
CS 451/551Computer Architecture Y assembly
CS 452/552Software Engineering Y UML, C++/Java
CS 456/556Systems Programming Y Exoo C/C++, assembly
CS 457/557Data Base Processing Y Exoo, Kinne C/C++/SQL
CS 458/558Algorithms Y Exoo, Kinne, Rafiey C/C++
CS 459/559Topics in Computer Science (1-3 hrs)
CS 469/569Unix/Linux Administration and Networking Y Baker C/C++/Bash
CS 470/570Programming Languages Y Prolog, Haskell, Smalltalk/Squeak
CS 471/571Operating Systems Y Exoo C/C++
CS 473/573Computer Networks Y Baker, Exoo, Kinne C/C++
CS 475/575Artificial Intelligence odd Baker, Exoo, Kinne C/C++
CS 479/579Web Programming II Y Baker, Exoo php, SQL, XML, javascript, SPARQL
CS 499Senior Seminar (1 hr) Kinne
CS 500Programming Fundamentals YY Basavaraj, Exoo, Kinne, model C/C++
CS 510Fast Track Introduction to Programming model C/C++ or Python
CS 600Concrete Mathematics Y Egri, model
CS 602Mobile and Cloud Computing odd model
CS 603Networking and Security even Kinne, model C/C++
CS 609Web Programming and Applications Y Kinne, model html/css/javascript/php/SQL
CS 610Survey of Programming Languages even model
CS 611Software Specification and Design odd model VDM-SL
CS 617Databases, Data Mining, and Big Data Y model Kinne
CS 618Computational Biology odd model Python
CS 619Trends in Computer Science even model
CS 620Theory of Computation II even Kinne
CS 621Discrete Structures II odd Rafiey
CS 650Topics in Computer Science
CS 652Software Engineering II odd Eiffel, Ruby, C++
CS 658Algorithms II odd Exoo, Kinne, Rafiey
CS 670Concurrent Programming even Exoo, Kinne C/C++
CS 671Operating Systems II odd Kinne C/C++
CS 673Networking II even Exoo, model C/C++
CS 680Readings in Computer Science
CS 685Software Project (3-6 hrs) YY
CS 695Computer Science Research (3-6 hrs) YY Exoo, Kinne LaTeX
CS 699Computer Science Internship (0-3 hrs) YY Kinne, model

Core Course Content

The following lists the most important content for the core CS courses. These are the items that the faculty will generally stress the most.

  • CS 151 Introduction to Computer Science - unix, text editor, html/css/javascript, basics of programming, binary/hex, some notion of algorithm (an n2 sort), boolean logic. Most important skill: using unix, dealing with text files. So there should be a lot of assignments like that.
  • CS 201 Computer Science I - C/C++ish - searching/sorting algorithms, data structures (linked list, heap, binary tree), binary/hex, basic data types (2's complement, floating point), file I/O, bit operations, dynamic memory, recursion. Most important skill: C programming.
  • CS 202 Computer Science II - all of C, C++ object-oriented and using STL containers, all of 201 again, any DS missed in 201, data structures from scratch in C, big O stuff, graph algorithms (a few), gdb and make, low-level file I/O? Most important skill: C/C++ programming, code for basic DS, understanding of basic DS
  • CS 303 Discrete Structures - logic, sets, graphs, proof techniques (induction, contradiction), number theory, discrete probability and counting, big O stuff?, recurrence relations? Most important skill: understanding of logic/sets/graphs/probability, can do some proofs.
  • CS 500 Programming Fundamentals - all of 151 that is not specific to html/web, all of 201, all of 202 (except C++). Most important skill: see 151, 201, 202.
  • CS 600 Concrete Mathematics - all of 303, parts of 151/201/202 that are not programming. Most important skill: see 151, 201, 202, 303.