Cornell UniversityWebsiteAcademic Catalog
BA Degree in Computer Science (A&S)source 1source 2source 3source 4source 5
CS Courses
- Introduction to Computing: A Design and Development PerspectiveorCS 1110 (4)introCS 1110: Introduction to Computing: A Design and Development Perspective
Programming and problem solving using Python. Emphasizes principles of software development, style, and testing. Topics include procedures and functions, iteration, recursion, arrays and vectors, strings, an operational model of procedure and function calls, algorithms, exceptions, object-oriented programming.
Introduction to Computing: An Engineering and Science PerspectiveCS 1112 (4)introCS 1112: Introduction to Computing: An Engineering and Science PerspectiveProgramming and problem solving using Python. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays, strings, recursion, object-oriented programming, algorithms, and data handling and visualization.
- Object-Oriented Programming and Data StructuresorCS 2110 (4)introCS 2110: Object-Oriented Programming and Data Structures
Fall, Spring, Summer. 4 credits. Student option grading. C. Muhlberger, A. Myers. Intermediate programming in a high-level language and introduction to computer science. Topics include object-oriented programming (classes, objects, subclasses, types), graphical user interfaces, algorithm analysis (asymptotic complexity, big “O” notation), recursion, testing, program correctness (loop invariants), searching/sorting, data structures (lists, trees, stacks, queues, heaps, search trees, hash tables, graphs), graph algorithms. Java is the principal programming language.
Object-Oriented Design and Data Structures - HonorsCS 2112 (4)introCS 2112: Object-Oriented Design and Data Structures - HonorsFall. Not offered: 2023-2024. Next offered: 2024-2025. 4 credits. Student option grading (no audit). N Foster. Intermediate software design and introduction to key computer science ideas. Topics are similar to those in CS 2110 but are covered in greater depth, with more challenging assignments. Topics include object-oriented programming, program structure and organization, program reasoning using specifications and invariants, recursion, design patterns, concurrent programming, graphical user interfaces, data structures as in CS 2110, sorting and graph algorithms, asymptotic complexity, and simple algorithm analysis. Java is the principal programming language.
- or
- Practicum or ProjectorororororComputer Graphics PracticumorCS 4621 (2)graphicsCS 4621: Computer Graphics Practicum
Provides CS 4620 students with hands-on experience in computer graphics programming on modern graphics hardware. This course emphasizes effective use of graphics APIs and the architecture of graphics applications. A final project involves building a substantial interactive graphics system. The course uses Javascript and WebGL for code development.
Practicum in Artificial IntelligenceorCS 4701 (2)aiCS 4701: Practicum in Artificial IntelligenceArtificial Intelligence project class. Possible projects topics include knowledge representation systems, search procedures, game-playing, automated reasoning, concept learning, reinforcement learning, neural nets, genetic algorithms, planning, natural language processing, computer vision. Should be taken only by students with significant experience in Artificial Intelligence, such as those who have already taken CS 4700, CS 4780, CS 4670, or CS 4740.
Natural Language ProcessingorCS 4740 (4)aiCS 4740: Natural Language ProcessingThis course constitutes an introduction to natural language processing (NLP), the goal of which is to enable computers to use human languages as input, output, or both. NLP is at the heart of many of today’s most exciting technological achievements, including machine translation, automatic conversational assistants and Internet search. The course will introduce core problems and methodologies in NLP, including machine learning, problem design, and evaluation methods.
Software EngineeringorororCS 5150 (4)softengCS 5150: Software EngineeringIntroduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems. Special topics include professionalism, project management, and the legal framework for software development. As a central part of the course, student teams carry out projects for real clients, using concepts of agile software development. Each project includes all aspects of software development from a feasibility study to final delivery.
Interactive Computer GraphicsCS 5625 (4)graphicsCS 5625: Interactive Computer GraphicsMethods for interactive computer graphics, targeting applications including games, visualization, design, and immersive environments. Introduces students to state-of-the-art interactive techniques and programmable shading. Programming assignments use C++ and OpenGL, and students also propose and implement an open-ended final project.
- Computer System Organization and ProgrammingorCS 3410 (4)sysCS 3410: Computer System Organization and Programming
Introduction to computer organization, systems programming and the hardware/ software interface. Topics include instruction sets, computer arithmetic, datapath design, data formats, addressing modes, memory hierarchies including caches and virtual memory, I/O devices, bus-based I/O systems, and multicore architectures. Students learn assembly language programming and design a pipelined RISC processor.
- Introduction to Analysis of AlgorithmsCS 4820 (4)algsCS 4820: Introduction to Analysis of Algorithms
Develops techniques used in the design and analysis of algorithms, with an emphasis on problems arising in computing applications. Example applications are drawn from systems and networks, artificial intelligence, computer vision, data mining, and computational biology. This course covers four major algorithm design techniques (greedy algorithms, divide-and-conquer, dynamic programming, and network flow), undecidability and NP-completeness, and algorithmic techniques for intractable problems (including identification of structured special cases , approximation algorithms, local search heuristics, and online algorithms).
- Mathematical Foundations for the Information AgeorCS 4850 (4)mathCS 4850: Mathematical Foundations for the Information Age
Covers the mathematical foundations for access to information. Topics include high dimensional space, random graphs, singular value decomposition, Markov processes, learning theory, and algorithms for massive data.
Basic ProbabilityorMATH 4710 (4)mathMATH 4710: Basic ProbabilityIntroduction to probability theory, which prepares the student to take MATH 4720. The course begins with basics: combinatorial probability, mean and variance, independence, conditional probability, and Bayes formula. Density and distribution functions and their properties are introduced. The law of large numbers and the central limit theorem are stated and their implications for statistics are discussed.
Basic Engineering Probability and StatisticsorENGRD 2700 (4)engrENGRD 2700: Basic Engineering Probability and StatisticsGives students a working knowledge of basic probability and statistics and their application to engineering. Includes computer analysis of data and simulation. Topics include random variables, probability distributions, expectation, estimation, testing, experimental design, quality control, and regression.
Introduction to Probability and Inference for Random Signals and SystemsororECE 3100 (4)engrECE 3100: Introduction to Probability and Inference for Random Signals and SystemsProbability theory is a mathematical discipline that allows one to reason about uncertainty: it helps us to predict uncertain events, to make better decisions under uncertainty, and to design and build systems that must operate in uncertain environments. This course will serve as an introduction to the subject on the modeling and analysis of random phenomena and processes, including the basics of statistical inference in the presence of uncertainty. Topics include probability models, combinatorics, countable and uncountable sample spaces, discrete random variables, probability mass functions, continuous random variables, probability density functions, cumulative distribution functions, expectation and variance, independence and correlation, conditioning and Bayess rule, concentration inequalities, the multivariate Normal distribution, limit theorems (including the law of large numbers and the central limit theorem), Monte Carlo methods, random processes, and the basics of statistical inference. Applications to communications, networking, circuit design, computer engineering, finance, and voting will be discussed throughout the semester.
Math/Stat Courses
- orCalculus IMATH 1110 (4)mathMATH 1110: Calculus I
Topics include functions and graphs, limits and continuity, differentiation and integration of algebraic, trigonometric, inverse trig, logarithmic, and exponential functions; applications of differentiation, including graphing, max-min problems, tangent line approximation, implicit differentiation, and applications to the sciences; the mean value theorem; and antiderivatives, definite and indefinite integrals, the fundamental theorem of calculus, and the area under a curve.
Calculus IIMATH 1120 (4)mathMATH 1120: Calculus IIFocuses on integration: applications, including volumes and arc length; techniques of integration, approximate integration with error estimates, improper integrals, differential equations and their applications. Also covers infinite sequences and series: definition and tests for convergence, power series, Taylor series with remainder, and parametric equations.
Linear AlgebraMATH 2210 (4)mathMATH 2210: Linear AlgebraTopics include vector algebra, linear transformations, matrices, determinants, orthogonality, eigenvalues, and eigenvectors. Applications are made to linear differential or difference equations. The lectures introduce students to formal proofs. Students are required to produce some proofs in their homework and on exams.
Calculus for EngineersMATH 1910 (4)mathMATH 1910: Calculus for EngineersEssentially a second course in calculus. Topics include techniques of integration, finding areas and volumes by integration, exponential growth, partial fractions, infinite sequences and series, tests of convergence, and power series.
Multivariable Calculus for EngineersMATH 1920 (4)mathMATH 1920: Multivariable Calculus for EngineersIntroduction to multivariable calculus. Topics include partial derivatives, double and triple integrals, line and surface integrals, vector fields, Green’s theorem, Stokes’ theorem, and the divergence theorem.
Linear Algebra for EngineersMATH 2940 (4)mathMATH 2940: Linear Algebra for EngineersLinear algebra and its applications. Topics include: matrices, determinants, vector spaces, eigenvalues and eigenvectors, orthogonality and inner product spaces; applications include brief introductions to difference equations, Markov chains, and systems of linear ordinary differential equations. May include computer use in solving problems.
Science Courses
Other Courses
History of the Major
2024 | Rename CS 2800 (Discrete Structures → Mathematical Foundations of Computing). Replace 1 CS Elective → "CS 3700 (Foundations of AI Reasoning and Decision-Making) or CS 3780 (Introduction to Machine Learning)". Drop required Probability course. |
2023 | Rename CS 1110 (Introduction to Computing using Python → Introduction to Computing: A Design and Development Perspective). Rename CS 1112 (Introduction to Computing using MATLAB → Introduction to Computing: An Engineering and Science Perspective). Remove CS 5414 (Practicum in System Security) as a project-course option. |
2022 | |
2021 | Add CS 4414 (Systems Programming) as an alternative to CS 4410 (Operating Systems). Drop CS 5152 (Open-Source Software Engineering) as a project-course option. |
2020 | Add CS 3152 (Introduction to Computer Game Architecture), CS 4152 (Advanced Topics in Computer Game Architecture), and CS 4750 (Natural Language Processing) as project-course options. Drop CS 6670 (Computer Vision) as a project-course option. |
2019 | Drop CS 4758 (Robot Learning) and CS 5643 (Physically Based Animation for Computer Graphics) as project-course options. |
2018 | |
2017 | |
2016 |