There’s no simple definition for the word hacker as intended here, but a good approximation might be “a programmer whose target audience is other programmers.”
Section 20 is an accelerated and systems-oriented version of CS 1410. The section covers the programing concepts of other sections of CS 1410, but through a different approach.
The official title of the course is Object-Oriented Programming, like all sections of CS 1410, and the section indeed covers object-oriented programming. Section 20 covers more, however, and the title Computer Science I for Hackers better captures the intent of the course.
Enroll in section 20 if you want a course that is different and more challenging compared the usual CS 1410. That’s the “accelerated” part.
Enroll in section 20 if you are particularly interested in topics such as programming languages, operating systems, compilers, C, and Unix. That’s the “systems-oriented” part —
though it shows up more clearly in the follow-up course, for which this course sets the foundation.
Section 20 of CS 1410 is intended as the first part of a two-semester sequence, and a companion section of CS 2420 will be offered in the spring semester.
Fall: CS 1410-20. Uses Racket Why Racket? See For Hackers by a Hacker below. as the main programming language for learning about program design. Also uses Java, and connects concepts in Racket and Java, but with less emphasis on Java details than the standard section of CS 1410 (which uses just Java).
Spring: CS 2420-20. Uses C Otherwise, most Utah CS students first encounter C in CS 4400. as the main programming language for learning about machine-level details and data structures, as well as Racket and some Java (while the standard section of CS 2420 uses just Java).
Enrolling in section 20 of CS 1410 does not oblige a student to enroll in the companion CS 2420 section. Students who finish section 20 of CS 1410 will be prepared for the standard sections of CS 2420, although they may have to learn some Java details to synchronize with students in the main track. (Books and other references on Java are plentiful.)
Enrolling in the companion CS 2420 section without having taken section 20 of CS 1410 is not recommended, since the course will build on concepts, terminology, and skills that are specific to section 20 of CS 1410.
The section 20 sequence is based on How to Design Programs (HtDP), a textbook for which the instructor is a co-author. Actually, the course starts with the draft second edition of HtDP. In the space of programming approaches, Racket and HtDP are considered high-level functional programming. The instructor, however, believes that the approach is also fundamentally the same as high-level object-oriented programming, and the course is designed to make that connection clear.
The section 20 sequence is also based on the instructor’s perspective from implementing the Racket language and run-time system, which ultimately requires low-level imperative programming. That perspective drives the emphasis on a machine model and machine-level algorithms in the CS 2420 part of the sequence.
Putting those pieces together, students in the section 20 sequence learn how to implement a high-level language using a low-level language, Implementing Lisp is a rite of passage for an aspiring hacker. which is a topic that is usually reserved for upper-division courses. At the same time, the concepts required for programming-language implementation serve many other kinds of programming tasks as well.
If you have any question about section 20 of CS 1410, contact Matthew Flatt (the instructor) at firstname.lastname@example.org.