CS 1110 is a 4 credit course designed that introduces computer programming concepts. It is also the first course for computer science majors, so it emphasizes the development and analysis of algorithms.

Who is this class for? CS 1110 is designed expressly for students without programming experience to learn introductory-level programming concepts and algorithm development and analysis. So, if you don't have programming experience, not only are you welcome, but you are our primary audience! You can take the course as the beginning of a path to a CS/IS major or minor, or as your only/last course in computing.

The course is not the right fit for the following kinds of students:

  1. If you "just" want to learn the basics of Python or "just" have specific applications in mind, and are not looking for development in fundamental programming skills: one of the alternatives listed below might be better; Python per se is not the focus of CS 1110.
  2. If you have taken or are taking CS 2110/ENGRD 2110, CS 2112, or a course offered or cross-listed with a CS number 3000 or above, you are not permitted to take CS 1110: Alternatives are listed below.
  3. Affiliated CS majors: ditto.

We recommend that students with CS AP credit or close-to-equivalent experience start in CS 2110: you can always switch to CS 1110 during add/drop. The Spring 2022 CS2110 instructors have also provided some examples of problems students entering 2110 should be able to do.

Courses without programming prerequisites

CS 1112: Introduction to Computing Using MATLAB
CS 1112 is the primary alternative to CS 1110. It has the same class components as CS 1110 (4 credits, 2 lectures/1 lab per week) but offers the "coziness" of a smaller class. Both CS1110 and CS1112 prepare students for CS 2110 and future computer science courses. CS 1110 has slightly more emphasis on software application development; CS 1112, which uses MatLab, has slightly more emphasis on scientific computation. While CS 1112 assumes no programming experience, it does require a comfort with mathematics, at the level of one semester of calculus. If you are an engineering student whose interests lie outside the "digital", you might consider that CS 1112 instead.
Due to a partial overlap in content, students will receive 6 credits instead of 8 if they take CS 1110 and CS 1112.

CS 1133: Short Course in Python
CS 1133 is a 2-credit course that covers the first half of CS 1110. It focuses on the basics in programming in Python, but does not include a lot of the computer science material in CS 1110.

CS/INFO 1300: Introductory Design and Programming for the Web
From the course description: The World Wide Web is both a technology and a pervasive and powerful resource in our society and culture. To build functional and effective web sites, students need technical and design skills as well as analytical 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 web sites 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.

CS/ORIE/STSCI 1380: Data Science for All
From the course description: This course provides an introduction to data science using the statistical programming language R. We focus on building skills in inferential thinking and computational thinking, guided by the practical questions we seek to answer from data sets arising in medicine, economics and other social sciences. The course starts with essential R programming principles, and how to use R for data manipulation, visualization, and sampling. These techniques are then used to summarize and visualize real data sets, draw meaningful conclusions from those data, and assess the uncertainty surrounding those conclusions. Throughout the process, students will learn to develop hypotheses about their data, and use simulations and statistical techniques to test these hypotheses. The course also covers how to use the Tidyverse open-source R packages to clean and organize complex data sets, and create high quality graphics for data visualization.

AEM 2840/5840: Python Programming for Data Analysis & Business Modeling
From the course description: This course is an introduction to programming with Python for students aiming to enter the world of business analytics. Using business applied cases students will increase decision making efficiency and productivity through a detailed understanding of Python programming languages. Students will also learn how to use a range of Python libraries for data analytics such as NumPy, MatPlotLib, Seaborn, Pandas, and Scikit.
Enrollment preference given to: Dyson students.
Due to an overlap in content, students will receive credit for only one course in the following group: AEM 2840, AEM 2841, AEM 5840, CS 1133, HADM 3710.

AEM 2841: Python Programming for Data Analysis and Business Modeling --- Non-Dyson Majors
From the course description: Data-driven decision making and the use of analytical approaches are critical skills for success in business. Analytics skills are increasing in demand and in many cases, are required for business professionals. The new technologies and development such as personal electrical devices, social media, online shopping, … resulted in exponential growth in the amount of data we generate and collect on a daily basis. Companies are highly interested in extracting knowledge from these sources. To be able to manipulate and analyze a large structured and unstructured dataset, you need to learn how to code. In this course, by learning Python, one of the most popular programming languages, you are taking a significant step in data analysis. You will learn how to design and code an algorithm and manipulate datasets.
Students are expected to have intermediate computing skills using Microsoft Office and a Windows platform and intermediate Excel skills.
Due to an overlap in content, students will receive credit for only one course in the following group: AEM 2840, AEM 2841, AEM 5840, CS 1133, HADM 3710.

EAS 2900: Computer Programming and Meteorology Software
From the course description: Introduction to Python programming and visualization specifically tailored to applications in meteorology and climate science. Topics include: basic Python programming, data manipulation, and instruction in the use of scientific analysis and visualization packages such as numpy, pandas, xarray, cartopy, and metpy.
Prerequisite: EAS 1310 and MATH 1110, or equivalent.

ENMGT 3101/5101: Introduction to Python for Engineering
One-credit course. From the course description: Python is one the most popular programming languages for machine learning and data science in different engineering fields. Conducting a project in python is not simply to run a script in Python, but rather to set up and manage project environment, libraries, and dependencies. The goals of this course are two folds. First, in this course, students learn how to configure and manage Python environments so that they can switch between working on different projects, share their project environments, and move to different machines easily. Second, students learn to work with libraries that are designed for scientific programming such as NumPy, Matplotlib, SciPy and pandas for the purpose of data analyzing, scientific computing, and visualization.
Prior programming experience in any language is useful, but not required. Python or MATLAB experience is not required.

CEE/ENMGT 3102/5102: Basics of Programming in Python
One-credit course. From the course description: The goal of this course is to provide students with a quick introduction to programming that will allow them to use Python as a problem solving tool for work, research, or study, and present a basis for continued learning of Python and other programming tools.
The course focuses on practical tools, including basic programming concepts and methods, introduction to data analysis, visualization, and scientific computing using Python, as well as setting up and managing project environments, libraries, and dependencies. We will work with libraries designed for scientific programming such as NumPy, Matplotlib, and Pandas.

ORIE 3120: Practical Tools for Operations Research, Machine Learning and Data Science From the course description: The practical use of software tools and mathematical methods from operations research, machine learning, statistics and data science. Software tools include structured query language (SQL), geographical information systems (GIS), Excel and Visual Basic programming (VBA), and programming in a scripting language (either R or Python). Operations research methods include inventory management, discrete event simulation, and an introduction to the analysis of queuing systems. Machine learning and statistical methods include multiple linear regression, classification, logistic regression, clustering, time-series forecasting, and the design and analysis of A/B tests. These topics will be presented in the context of business applications from transportation, manufacturing, retail, and e-commerce.
Prerequisite or corequisite: ENGRD 2700.

HADM 3710: Python Programming
Two-credit course. From the course description: Introduction to programming in Python with an emphasis on Hospitality applications. No previous programming experience is required. Topics covered include programming basics, file input and output, Excel integration, database integration, and data analysis.
Prerequisites: HADM 1740 or HADM 2740.

NS 4300: Proteins, Transcripts, and Metabolism: Big Data in Molecular Nutrition From the course description: This course will cover fundamental concepts of big data analysis at an introductory level in the context of gene expression at the mRNA and protein levels with a focus on metabolic regulatory networks. Programming in Python and R will be required, but no prior experience is necessary. Programming in this course will focus methods to parse large data sets and perform informatics analyses.
Prerequisite: one semester introductory biology lecture (BIOMG 1350, BIOG 1440, or equivalent), biochemistry (NS 3200, BIOMG 3300, or equivalent), and introductory statistics (STSCI 2150, PAM 2100, AEM 2100, or equivalent).

CRP/DESIGN 4680 - Urban Spatial Data Analytics From the course description: The course will introduce students to a wide array of spatial data analytical techniques and will be organized as follows: 1) Students will use the common Python packages to retrieve, clean, and manage spatial data and integrate them into spatial analyses. Topics may include the basic Python syntax and functions, web scraping zillow data, spatial data cleaning and management using Pandas and Geopandas, and geoprocessing using ArcPy package. 2) Students will analyze and interpret spatial data to answer urban related research questions using a variety of software platforms. Topics may include exploratory spatial data analysis, spatial autocorrelation, point pattern analysis, spatial interpolation techniques and Geostatistics, spatial regression (including geographically weighted regression), as well as spatial lag and spatial error models.


The Cornell Center for Social Sciences offers workshops on Python, R, github, even "NLP 101": "Discover tools and methods to implement your research using various types of data at CCSS!"

Courses with programming prerequisites

CS 2043: UNIX Tools and Scripting Two-credit, six-week course. From the course description: UNIX and UNIX-like systems are increasingly being used on personal computers, mobile phones, web servers, and many other systems. They represent a wonderful family of programming environments useful both to computer scientists and to people in many other fields, such as computational biology and computational linguistics, in which data is naturally represented by strings. This course takes students from shell basics and piping, to regular-expression processing tools, to shell scripting and Python. Other topics to be covered include handling concurrent and remote resources, manipulating streams and files, and managing software installations.
Prerequisites/Corequisites: one programming course or equivalent programming experience. No previous knowledge of UNIX or expertise in any particular language is assumed.

STSCI 4060/5045: Python Programming and its Applications in Statistics
From the course description: The first part of the course teaches basic Python programming knowledge and skills. The second part deals with Python application in statistics (e.g., data visualization and statistical analysis), Python-database integration (e.g., access, update and control an Oracle database), and Python web services (e.g., database-driven dynamic webpages using Python CGI scripts). These techniques are utilized in a comprehensive course project.
Prerequisite: basic programming skills (any language), SQL (Oracle preferred) and SAS.

ORIE 5270: Big Data Technologies Two credits. From the course description: This course offers a broad overview of computational techniques and mathematical skills useful for data scientists. Topics include: unix shell, regular expressions, version control: (git), data structures and algorithms, working with databases, data analysis using Python and related libraries (Pandas, NumPy/Scipy, scikit-learn), parallel computing (Map-Reduce, Spark, Hadoop), basic finite-precision arithmetic, an overview of standard machine learning and optimization algorithms, and time-permitting, a guided tour of functional programming.
Students are expected to be comfortable in at least one programming language; Python will be used for most of the course.

Examples of problem students entering CS 2110 should be able to do

From the Spring '22 CS2110 webpage:

  1. Write a function that returns true if its string parameter is a palindrome (and false otherwise). A palindrome is a string that reads the same backward or forward, e.g. "Madam, I'm Adam." Actually, this string would fail the test because it contains white space and punctuation. With parameter "madamimadam", the function would return true.
  2. Write a function that returns its string parameter but with punctuation and spaces removed and letters turned into lower case. Now if you call your function from problem 1 with the output of this new function, "Madam, I'm Adam." would pass the test.
    Ideally, use some existing string function in the language you are familiar with to test for white space and punctuation and to map upper case to lower. No need to reinvent the wheel. In CS 2110 we prefer to use the provided language features, including prebuilt library methods, to full effect. The best programmers are the ones who are most effective in using the tools available to them: they write less code, and their code is more expressive and more exact, so they make fewer mistakes.
  3. Compute the median of a one-dimensional array x containing integers, or count the number of zeros in x (each of these actions would be a separate method, returning an integer value). Compute the mean as a floating point number.
  4. Given integers b and c, compute b/c as an integer (rounded to the nearest integer). That is, round down if the remainder is less than 1/2, and up if the remainder is 1/2 or more. The value returned by the method should be an integer, not a floating point number.
  5. Count the number of zeroes in a rectangular matrix y. For a square array, determine whether all the diagonal elements have the same value.
  6. Define the "balance" of a rectangular matrix y to be the number of elements larger than the mean value (rounded to an integer using the method of question (4) minus the number of elements smaller than the mean. Given an integer matrix, compute its mean and balance.
  7. (Binary search). Given a sorted integer array segment b[h..k] and an integer x, find the position j such that b[h..j-1] <= x and x < b[j..k]. (By b[h..j-1] <= x, we mean that all values of b[h..j-1] are <= x.) Your program should run in time proportional to the logarithm of k+1-h. (Did you learn binary search in your previous course? If so, this should be easy.)