So when are all these courses offered?

Introductory Courses:

Fundamental Courses:

Core Courses:

Elective Courses:

  • 276. Multimedia Programming and Design An introduction to object-oriented programming techniques that underlie the creation, manipulation, and transmission of digital media, including digital photography, audio, and video. Topics include scaling and transforming pictures, sound waveform visualization and manipulation, MIDI, chromakey, frame-based animation, and compression, encoding, and transmission of digital media over the Internet. Prerequisite: Computer Science 157 or permission of instructor. (Credit, full course.) Carl

  • 326. Functional Programming Data abstraction and data-driven recursion, procedures as values, managing state, syntax expansion, streams, continuations. Prerequisite: Computer Science 257. (Credit, full course.)

  • 344. Robotics An overview of the field of robotics with special emphasis on motion planning. In addition to basic computer science concepts, introductions to the necessarily related fields of mechanical and electrical engineering will be provided as appropriate. Computer simulations will be used and students will get hands-on experience with "real world" robotics through assignments using project component kits. Prerequisites Computer Science 257 and Mathematics 215. (Credit, full course.)

  • 348. Databases An introduction to the design of databases for the systematic collection, organization, and retrieval of large quantities of related information. The relational data model will be used with a design process that begins with conceptual modeling and ends with the physical data organization. The course includes topics such as normalization, SQL, data quality management, implementation issues, database administration, and data warehousing. Prerequisites: Computer Science 257 and Mathematics 215. (Credit, full course.)

  • 356. Artificial Intelligence Knowledge representation, expert systems, natural language processing, computer vision, machine learning, game playing, cognition. Prerequisite: Computer Science 326 or 376. (Credit, full course.)

  • 360. Principles of Interactive Computer Graphics Introduction to interactive computer graphics including 2D and 3D viewing, clipping, hidden line/surface removal, shading, interaction handling, geometrical transformations, projections, and hierarchical data structures. Brief introductions to related and dependent fields of physically-based modeling and scientific visualization will be included. Prerequisite: Computer Science 257 and Mathematics 215. (Credit, full course.)

  • 376. Programming Languages Imperative, object-oriented, declarative, and functional programming language paradigms. Prerequisites: Mathematics 215 and Computer Science 257. (Credit, full course.)

  • 411. Computer Networks and Architecture Computer network design and performance, communication protocols, LAN standards, internetworking, congestion control, routing, client/server programming, network security. Prerequisite: Computer Science 270. (Credit, full course.)

  • 421. Compiler Writing Regular and context-free languages, lexical and syntactic analysis, type checking, code generation and optimization. Prerequisites: Computer Science 310 and 376. (Credit, full course.) (Rarely offered ...)

  • 430. Machine Learning Study of intelligent problem-solving, searching algorithms, inference systems, and machine intelligence. Topics covered include Bayesian decision theory and pattern recognition techniques such as neural networks, genetic algorithms, and traditional artificial intelligence methodologies. Prerequisite: Mathematics 210 and Computer Science 257. (Credit, full course.) (Rarely offered ...)

  • 444. Independent Study (Credit, half to full course.)


The introductory courses CSci 157: Introduction to Programming & CSci 257: Data Structures are generally offered every semester. The following Computer Science courses figure prominently as required foundation and core courses in the Computer Science major, and are normally offered each academic year:
  • 157 (Introduction to Programming)
  • 257 (Data Structures)
  • 270 (Computer Organization)
  • 284 (Database Design with Web Applications)
  • 320 (Analysis of Algorithms)
  • 428 (Operating Systems)
Other Intermediate and advanced computer science courses are offered in a two-year cycle. Use the course cycle information below to plan several years ahead in your program of study.

Courses for Any Given Academic Year

Fall/Advent Semester
157 - Introduction to Programming
257 - Data Structures
270 - Computer Organization
320 - Analysis of Algorithms
tba - elective
Spring/Easter Semester
157 - Introduction to Programming
257 - Data Structures
284 - Database Design with Web Applications
428 - Operating Systems
tba - elective