Each semester, CS 225 offers a one credit hour honors section that covers an advanced topic in CS related to data structures (offered as CS 296, Section 25). This is the honors component to receive James Scholar or HCLA credit for CS 225. However, it is not necessary to be part of an honors program to participate in CS 296 – anyone can join!

As an honors course, CS 296 will be much less structured than CS 225, require significant independent work and learning, and we expect you to go above and beyond what you would normally do as part of a regular course. Students in the past have learned a lot, had a lot of fun, and created amazing projects.

Topic Overview

This semester, CS 296 will focus on functional data-structures using a programming language called Clojure. In CS 225 you are using a bottom-up style of programming where you express your computations by manipulating pointers and destructively updating intermediate values to get final values. Clojure uses a top-down style of programming, where you have data structures and many operations that apply to the entire data structure at once. Also, data in Clojure is immutable: once a variable has been assigned a value, it cannot be changed! Believe it or not, there are some major advantages to programming this way, and function programming is becoming increasingly relevant in industry.

Course Meeting Times and Registration

CS 296 meets every Friday, starting September 22, 17:00 in 1320 Siebel Center. You must be able to attend the course meeting to participate in the course.


We expect that you will be taking CS 225 at the same time, but that is not strictly necessary. If you are not enrolled in CS 225, you must have credit for CS 225.

If the honors section fills up, priority will be given to current CS 225 students.

Registering for CS 296

Since CS 296’s first meeting is not until several weeks into the semester, you may not have registered for it during normal registration. We are more than happy to approve any late-adds for you to add the course up until the first meeting.

You can “Late Add” by: