|
Choosing your first CS course
Visit the Course Conversion website for the 4 digit course numbers
Cornell's CS program offers courses in a wide variety of exciting academic areas including courses in graphics and animation, artificial intelligence and robotics, internet systems and technology, game design, security, hardware development, data modeling, biotechnology, databases and digital libraries, and computer vision.
CS is not just programming...
As just mentioned, computer science courses are available in a variety of areas. This section includes a list of introductory CS courses that are not centered around programming. CS 170 provides an introduction to Cognitive Studies and examines how intelligent information processing can arise from biological and artificial systems. CS 165/ENGRI 165 attempts to unravel some of the mysteries going on inside software used for arts and music. CS 167/ENGRI 167 introduces the concepts and ideas behind computer imaging and computer graphics, both software and hardware. CS 172/ENGRI 172 is an introduction to computer science using examples from the field of artificial intelligence. CIS 300 investigates the theory and practice of developing computer games from a blend of technical, aesthetic, and cultural perspectives.
If you are looking for a beginning programming course...
When shopping for a first programming course to take in computer science, first evaluate your current programming expertise. As a general rule, don't be concerned about which programming language is used in your first programming course; the language is simply a vehicle used to present programming concepts,
If you haven't taken a programming course before, CS 100 is usually the appropriate starting point. We offer several variants.
If you already have programming experience at the AP level or equivalent, you may want to take CS 211. Please note that AP credit is equivalent to CS 100J. Students with substantial experience beyond that may be permitted to enroll in CS 312 after consultation with the Director of Undergraduate Studies.
For those who already have substantial programming experience and are looking for brief introductions to other programming languages, we offer a few "short" courses: CS 113 (Intro to C), CS 213 (C++ Programming) and CS 215 (Introduction to C#). For those wanting experience working in a Unix environment, we offer CS 114 (Unix Tools) and CS 214 (Advanced Unix Programming and Tools). Students seeking web design experience should consider CS 130 (Introductory Design and Programming for the Web).
Introductory programming course overview
Note to Engineering students: In order to fulfill the introductory programming requirement; select one course from each of the two columns with the caveat that you can only take one of the two low time requirement courses.
Time Requirement |
Java |
Matlab |
Low |
101J |
101M |
Medium |
100J |
100M |
Honors |
100H |
100R |
Possible first courses are CS 99, CS 100, CS 130, CS 165, CS 170, CS 167, CS 172, CS 211, CS 213, CS 214, CS 215, CS 312, CIS 300.
CS 99 - Fundamental Programming Concepts
This is a 2-credit S/U course in programming offered in the summer only. An appropriate high-level programming language is used. CS 99 is intended for students who plan to take CS 100 but want to work on their problem solving skills and who want some exposure to programming before entering COMS 100. COMS 99 open only to students who intend to go on to CS 100.
CS 100M - Introduction to Computing Using Matlab
Programming and problem solving using Matlab. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays, and Matlab graphics. Assignments are designed to build an appreciation for complexity, dimension, fuzzy data, inexact arithmetic, randomness, simulation, and the role of approximation.
Assumes student is comfortable with math (at level of one semester of calculus) but has no prior programming experience.
CS 100J - Introduction to Computing Using Java
Programming and problem solving using Java. Emphasizes principles of software development, style, and testing. Topics include object-oriented concepts, procedures and functions, iteration, arrays, strings, algorithms, exceptions, GUIs (graphical user interfaces). Weekly labs provide guided practice on the computer, with staff present to help. Assignments use graphics and GUIs to help develop fluency and understanding.
Assumes basic high school mathematics (no calculus) but no programming experience.
CS 100R - Introduction to Computing Using Matlab and Robotics
Honors-level introduction to computer science using camera-controlled robots. Emphasis is on modular design of programs and fundamental algorithms. Example projects include controlling a robot by pointing a light stick and making a robot recognize simple colored objects. Programming in Matlab only. Requires programming experience (any language is acceptable), or permission of instructor.
CS 100H - Introduction to computing using Java, Honors
An accelerated but thorough introduction to programming, using Java, taught in a small class environment. The primary emphases are problem solving, modular design, and software development, with the focus on learning how to tackle a variety of ill-defined problems in a structured manner. No prior programming experience is required but will help, and preparedness to enjoy collaborative work and challenges would be a significant asset.
CS 101J - Transition to Object-Oriented programming
Introduction to object-oriented concepts, using Java. Assumes programming knowledge in a language like Matlab, C, C++, or Fortran. Students who have learned Java but were not exposed heavily to OO are welcome.
CS 101M - Introduction to Computing Using MATLAB
Introduction to Matlab and scientific computing. Covers the Matlab environment, assignment, conditionals, iteration, scripts, functions, arrays, scientific graphics, and vectorized computation. Assumes programming knowledge in a language like Java, C, C++, or Fortran.
CS 113 - Introduction to C
A brief introduction to the C programming language and standard libraries. Unix accounts will be made available for students wishing to use that system for projects, but familiarity with Unix is not required. (Projects may be done using any modern implementation of C). CS 213 (C++ Programming) includes much of the material covered in 113. Students planning to take CS 213 normally do not need to take 113.
CS 114 - Unix Tools An introduction to Unix, emphasizing tools for file management, communication, process control, managing your Unix environment, and rudimentary shell scripts. Knowledge of at least one programming lanugauge is encouraged. Projects assume no previous knowledge of Unix or expertise in any particular language.
CS 130 - Introductory Design and Programming for the Web
The World Wide Web is both a technology and a pervasive and powerful resource in our society and culture. To build functional and effective websites, students need technical and design skills as well as analytic skills for understanding who is using the web, in what ways they are using it, and for what purposes. In this course, students develop skills in all three of these areas through the use of technologies such as XHTML, Cascading Stylesheets, and PHP. Students study how websites are deployed and used, usability issues on the web, user-centered design, and methods for visual layout and information architecture. Through the Web, this course provides an introduction to the interdisciplinary field of Information Science. No computer background necessary.
CS 165 - Computing in the Arts (also ENGRI 165)
Over the centuries, artists in a wide variety of media have employed many approaches tothe creative process, ranging from teh philosophical to the mechanical and the virtual. This course unravels some of the mysteries going on inside software used for art and music. We look at ways of breaking things apart and sampling and ways of putting things together and resynthesizing, and we explore ideas for creation. There are no formal course prerequisites (in particular, no course in programming, calculus, or probability), although a good comfort level with computers and some of the arts is helpful. This course does not teach software packages for creating art and music. The course complements ART 171+ and MUSIC 120+.
CS 170 Introduction to Cognitive Science
This course surveys the study of how the mind/brain works. We will examine how intelligent information processing can arise from biological and artificial systems. The course draws primarily from five disciplines that make major contributions to cognitive science: philosophy, psychology, neuroscience, linguistics, and computer science. The first part of the course will introduce the roles played by these disciplines in cognitive science. The second part of the course will focus on how each of these disciplines contributes to the study of five topics in cognitive science: language, categorization, memory, vision, and action.
CS 167 - Visual Imaging in the Electronic Age (also ENGRI 167)
The course introduces the concepts and ideas behind computer imaging and computer graphics, both software and hardware. Topics include perspective representations, display technology, how television works, bandwidth concepts, digital photography, computer graphics modeling and rendering, matting and compositing, color perception, data acquisition, and volumetric imaging. Historical precedents, primarily from the art world, are used throughout. Other models of imaging are discussed, including laser scanning, ultrasound, x-rays, and magnetic resonance, each of which is important to medical practice. This is not a course on how to use any particular graphics/imaging program, but rather an explanation of the underlying principles.
CS 172 - Computation, Information and Intelligence (also ENGRI 172)
Introduction to computer science focusing on current methods and examples from the field of artificial intelligence. Topics include game playing, search techniques, problem-space design, machine learning, information retrieval and web search, natural language processing, machine translation, and the Turing test. This is not a programming course; rather, "pencil and paper" problem sets are assigned, since the class is centered on algorithmic concepts and mathematical models.
CS 211 - Object-Oriented Programming and Data Structures (also ENGRD 211)
Intermediate programming in a high-level language and introduction to computer science. Topics include program structure and organization, modules (classes), program development, proofs of program correctness, recursion, data structures and types (lists, stacks, queues, trees), object-oriented and functional programming, and analysis of algorithms. Java is the principal programming language.
CS 213 - C++ Programming
An intermediate introduction to the C++ programming language and the C/C++ standard libraries. Topics include basic statements, declarations, and types; stream I/O; user defined classes and types; derived classes, inheritance, and object-oriented programming; exceptions and templates. Recommended for students who plan to take advanced courses in computer science that require familiarity with C++ or C. Students planning to take CS 213 normally do not need to take CS 113; 213 includes most of the material taught in 113.
CS 214 - Advanced Unix Programming and Tools
A focus on Unix as a programming environment for people with a basic knowledge of Unix and experience programming in at least one language. Projects cover advanced shell scripts (sh, ksh, csh), Makefiles, programming and debugging tools for C and other languages, and more modern scripting languages such as Perl and Python. Students with little or no experience with Unix should take CS 114 first.
CS 215 - Introduction to C#
Introduces students to building applications in the .NET environment using the C# programming language.
CS 312 - Data Structures and Functional Programming
An advanced programming course that emphasizes functional programming techniques and data structures. Programming topics include recursive and higher-order procedures, models of programming language evaluation and compilation, type systems, and polymorphism. Data structures and algorithms covered include graph algorithms, balanced trees, memory heaps, and garbage collection. Also covered are techniques for analyzing program performance and correctness.
CIS 300 - Introduction to Computer Game Design
Investigates the theory and practice of developing computer games from a blend of technical, aesthetic, and cultural perspectives. Technical aspects of game architecture include software engineering, artificial intelligence, game physics, computer graphics, and networking. The writing component of the course can be used to satisfy the Engineering College Technical Writing requirement through a petition. Aesthetic and cultural aspects of design include art and modeling, sound and music, history of games, genre analysis, role of violence, gender issues in games, game balance, and careers in the industry. Programmers, artists, musicians, and writers collaborate to produce an original computer game.
|