## Welcome to the Unofficial Cornell Computer Science Wiki

Want to add your thoughts? See a class that needs info? Contribute to this wiki! This is not limited to only coursework. Contribute any resources or additional pages you think anyone may find useful! If a page does not exist for a class you have taken, please do us all a favor and make one!

This site is hosted on Git

lab, but the source is on Github. Gitlab offers much better hosting (in particular, allowing custom plugins), but Github is better known in open source. Don’t mix up the URLs!

- Welcome to the Unofficial Cornell Computer Science Wiki
- Handy Links
- CS Community Pages
- The CS Major/Minor
- CS Classes
- CS-Related Classes
- Clubs and Project Teams
- Getting Involved in CS/Open Source
- Career Advice

## Handy Links

- FAQ—Answers to some of the most commonly asked questions
- Practice & Challenges—How to improve your CS skills
- I’m struggling in CS/I don’t know if CS is right for me—Never fear
- About this wiki
- Contributing Guide and List of Contributors
- ACSU Readme—An intro to the major for prefrosh/underclassmen, by ACSU

## CS Community Pages

- Cornell CS Facebook Group—Q&A, interesting links, and discussion
- Cornell CS Polls—For fun or for surveys
- ACSU Website
- OpenSourceCornell—Some of whose members now maintain this wiki (and you can, too!)
- ISSA—Information Science Student Association
- URMC—Under-Represented Minorities in Computing
- WICC—Women in Computing at Cornell
- ACSU Facebook Page
- Awesome Cornell—Awesome (open source!) projects by your fellow Cornellians
- Your CS Career 2014

## The CS Major/Minor

## CS Classes

- What Do I Take Next?
- I’m an incoming freshman
- I’m an incoming transfer
- I’m new to the major
- I’m thinking about a minor
- I’m thinking about the game design minor

### 1000

- CS 1110—Introduction to Computing Using Python
- CS 1112—Introduction to Computing Using MATLAB
- CS 1114—Introduction to Computing Using MATLAB and Robotics
- CS 1115—Introduction to Computational Science and Engineering Using MATLAB Graphical User Iterfaces
- CS 1132—Transition to MATLAB
- CS 1133—Transition to Python
- INFO/CS 1300—Introductory Design and Programming for the Web
- CS 1610—Computing in the Arts
- CS 1620—Visual Imaging in the Electronic Age
- CS 1710—Introduction to Cognitive Science
- CS 1810—Topics in the Analysis and Transmission of Knowledge and Information
- CS 1830—Voting: Does Democracy Have a Voice?

### 2000

- CS 2022—Introduction to C
- CS 2024—C++ Programming
- CS 2026—Introduction to C Sharp
- CS 2042—UNIX Tools
- CS 2043—UNIX Tools and Scripting
- CS 2044—Advanced UNIX Programming and Tools
- CS 2048—Introduction to iPhone App Development
- CS 2110—Object-Oriented Programming and Data Structures
- CS 2111—Java Practicum
- CS 2112—Object-Oriented Programming and Data Structures - Honors
- CS 2300—Intermediate Design and Programming for the Web
- CS 2800—Discrete Structures
- CS 2850—Networks

### 3000

- CS 3110—Data Structures and Functional Programming
- CS 3152—Introduction to Computer Game Architecture
- CS 3300—Data-Driven Web Applications
- CS 3410—Computer System Organization and Programming
- CS 3420—Embedded Systems
- CS 3740—Computational Linguistics
- CS 3758—Autonomous Mobile Robots

### 4000

- CS 4110—Programming Languages and Logics
- CS 4120—Introduction to Compilers
- CS 4121—Practicum in Compilers
- CS 4152—Advanced Topics in Computer Game Architecture
- CS 4210—Numerical Analysis and Differential Equations
- CS 4220—Numerical Analysis: Linear and Nonlinear Problems
- CS 4300—Information Retrieval
- CS 4302—Web Information Systems
- CS 4320—Introduction to Database Systems
- CS 4321—Practicum in Database Systems
- CS 4410—Operating Systems
- CS 4411—Practicum in Operating Systems
- CS 4420—Computer Architecture
- CS 4620—Introduction to Computer Graphics
- CS 4621—Computer Graphics Practicum
- CS 4670—Introduction to Computer Vision
- CS 4700—Foundations of Artificial Intelligence
- CS 4701—Practicum in Artificial Intelligence
- CS 4740—Introduction to Natural Language Processing
- CS 4750—Foundations of Robotics
- CS 4758—Robot Learning
- CS 4775—Computational Genetics and Genomics
- CS 4780—Machine Learning
- CS 4786—Machine Learning for Data Science
- CS 4810—Introduction to Theory of Computing
- CS 4812—Quantum Information Processing
- CS 4820—Introduction to Algorithms
- CS 4830—Introduction to Cryptography
- CS 4850—Mathematical Foundations for the Information Age
- CS 4852—Networks II
- CS 4860—Applied Logic

### 5000

- CS 5114—Network Programming Languages
- CS 5150—Software Engineering
- CS 5152 - Open Source Software Engineering
- CS 5220—Applications of Parallel Computers
- CS 5300—The Architecture of Large - Scale Information Systems
- CS 5412—Cloud Computing
- CS 5414—Distributed Computing Principles
- CS 5430—System Security
- CS 5432—Physical Computing
- CS 5434—Defending Computer Networks
- CS 5540—Computational Techniques for Analyzing Clinical Data
- CS 5625—Interactive Computer Graphics
- CS 5643—Physically Based Animation for Computer Graphics
- CS 5724—Evolutionary Computation
- CS 5786—Machine Learning for Data Science
- CS 5846—Decision Theory I

### 6000

- CS 6110—Advanced Programming Languages
- CS 6114—Network Programming Languages
- CS 6117—Category Theory for Computer Scientists
- CS 6210—Matrix Computations
- CS 6320—Advanced Database Systems
- CS 6360—Educational Technology
- CS 6410—Advanced Systems
- CS 6452—Datacenter and Network Services
- CS 6630—Realistic Image Synthesis
- CS 6640—Computational Photography
- CS 6650—Computational Motion
- CS 6700—Advanced Artificial Intelligence
- CS 6766—Reasoning about Uncertainty
- CS 6780—Advanced Machine Learning
- CS 6810—Theory of Computing
- CS 6820—Analysis of Algorithms
- CS 6825—The Science Base for the Information Age
- CS 6830—Cryptography
- CS 6840—Algorithmic Game Theory
- CS 6850—The Structure of Information Networks

## CS-Related Classes

### InfoSci

- INFO 1200—Information Ethics, Law, and Policy
- INFO 2450—Communication and Technology
- INFO 2950—Introduction to Data Science
- INFO 3200—New Media and Society
- INFO 3300—Data Driven Web Applications (crosslisted as CS 3300)
- INFO 4240—Designing Technology for Social Impact
- INFO 4320—Introduction to Rapid Prototyping and Physical Computing
- INFO 4430—Teams and Technology

### ECE

### Math

- Required to affliate - MATH 1110/1120/1220/1910/1920
- Classes sometimes required for CS classes - MATH 2210/2220/2230/2240/2310/2930/2940
- MATH 3360—Applicable Algebra
- MATH 4240—Wavelets and Fourier Series
- MATH 4250—Numerical Analysis and Differential Equations (crosslisted as CS4210)
- MATH 4260—Numerical Analysis: Linear and Nonlinear Equations (crosslisted as CS4210)
- MATH 4410—Introduction to Combinatorics I
- MATH 4420—Introduction to Combinatorics II
- MATH 4710—Basic Probability
- MATH 4720—Statistics
- MATH 4810—Mathematical Logic
- MATH 4820—Topics in Logic and the Foundations of Mathematics
- MATH 4860—Applied Logic (crosslisted as CS4860)

### Other

- BTRY 3080—Probability Models and Inference

This is not an exhaustive list. Many areas of mathematics are used in CS somehow, some specific examples being number theory (cryptography), manifolds (optimisation), geometry (linear programming), and linear algebra (numerical methods).

## Clubs and Project Teams

## Getting Involved in CS/Open Source

How do I get involved on campus?

How do I get involved in open source?

How do I get involved in research?

## Career Advice

What sorts of opportunities are available, and how do I find them?

How can I prepare for career fairs?