CS110 is for students who want a broad exposure to the fundamental concepts of computer science, although it is unlikely that they will take other computer science courses. CS110 uses the Internet as a unifying theme for exploring a broad range of computer science topics, including networks, description languages, programming, data representation, ethics, and the impact of computers on society. Students get hands-on programming experience building Internet applications using HTML and Java Script. The course culminates with a final project in which students design and implement an interactive web page.
CS111 is for students who want an in-depth introduction to programming and problem solving and might want to take more advanced computer science courses. It is particularly for students who plan to major or minor in computer science, but also for students that are majoring elsewhere but want to learn general programming and problem solving techniques. CS111 covers fundamental ideas in programming, including abstraction, modularity, recursion, control structures, and data structures. You will get hands-on experience with these ideas by reading, modify, debugging, designing, writing, and testing programs written in the Java programming language. Example applications involve graphics, user interfaces, games, text manipulation, and animations.
CS230 covers the implementation and use of classical data structures such as lists, stacks, queues, trees, tables and graphs, which should be in every programmer's bag of tools. Programs are often judged by how effectively they make use of resources such as space and time. We will explore ways to describe the efficiency of algorithms and use these tools to evaluate various approaches to implementing data structures and algorithms. The ability to create large and complex computer programs is enhanced if they can be composed out of reusable components with standard interfaces that can be combined in mix-and-match ways. We will study how to compose programs out of such components. We will introduce abstract data types as a way to represent computational values and the operators that manipulate them.
CS240 is intended to demystify the computer (open up the black box
) and teach how information at the highest level
is processed and ultimately executed by the underlying circuitry. To this end, the course provides an introduction to machine organization and assembly language programming.
Specific topics include the fundamentals of computer organization (introduction to numeric representation, Boolean logic, digital logic and all associated technology),
a basic data path implementation, assembly language programming, how to assess and understand the performance of a computer, and brief overviews of assemblers,
compilers and operating systems.