I’m new to programming
Start with MIT’s introductory course, then work through its lessons and assignments at your own pace.
Start with: Introduction to Computer Science and Programming in Python
RedLectern topic
Learn to describe problems, write programs, organize data, and improve code.
For: Learners at any starting point, including people with no programming experience.
After this page you can: Choose a learning path and plan, write, test, and revise a small program.
Page reviewed
Part of: Computer Science
Programming is the work of turning a problem description into instructions a computer can carry out. Learners break tasks into smaller steps, represent a solution in pseudocode or code, and practice revising it as they learn. The aim here is to connect the ideas behind a program with the choices made while writing one.
Start with problem solving and core programming ideas, then explore Python as one language for putting those ideas into practice. Continue into data structures, testing, and version control as your goals grow. The computer science hub offers wider context; data science, artificial intelligence, and machine learning are related paths to explore.
Start with MIT’s introductory course, then work through its lessons and assignments at your own pace.
Start with: Introduction to Computer Science and Programming in Python
Use the official Python tutorial to revisit the language’s syntax and features, choosing the topics you need.
Start with: The Python Tutorial
Read the opening chapter of Pro Git to learn what version control records and how it can help you revisit earlier work.
Start with: Pro Git: About Version Control
Break a task into steps before choosing code, then examine how an algorithm works and how its efficiency can be considered.
This tutorial practices turning a problem description into code features and smaller actionable tasks.
Algorithm
A set of instructions for solving a problem or producing an output from input.
Pseudocode
A human-readable way to describe instructions for a computer.
Write steps for finding the smallest value in a short list, then try them on [4, 1, 3].
Start with 4 as the smallest seen; compare 1 and then 3. The smallest value is 1.
Use a language’s basic features to express calculations, decisions, repetition, and reusable functions.
The tutorial covers control flow and defining functions in Python.
Function
A named block of statements that can be called to carry out a task.
Control flow
The order in which a program’s statements are carried out.
Describe a function that takes a number and returns twice that number.
For input 4, the function multiplies by 2 and returns 8.
Learn how collections organize values, and choose a structure that fits how a program needs to store or retrieve information.
This lesson provides a focused introduction to data structures.
List
A mutable sequence typically used to store a collection.
Dictionary
A collection that uses keys to look up values.
Choose a structure for storing each person’s name and phone number, then give a sample entry.
Use a dictionary keyed by name, such as {"Lee": "555-0100"}.
Test a program’s response to selected inputs, then use version control to record changes and revisit earlier versions.
This chapter describes how Git tracks file states and records staged changes in commits.
Test case
A check for a specific response to a particular set of inputs.
Version control
A system that records file changes over time so earlier versions can be recalled.
For a function that doubles its input, name one test input and expected output.
Test input 4 and expect output 8.
No recent updates are available.
Harold Abelson and Gerald Jay Sussman, with Julie Sussman · 1996
MIT Press describes its treatment of interpreters, compilers, and different computational models; MIT used it as a course textbook.
Brian W. Kernighan and Rob Pike · 1999
A Princeton course uses it as a required text, and an ACCU review highlights its usefulness across programming languages.
Brian W. Kernighan and Dennis M. Ritchie · 1988
A university course lists it as required reading; an ACCU review describes it as an introduction to C and outlines its core language topics.
Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi · 2018
MIT Press describes its focus on the program design process; the authors provide a free online edition.
Peter Van Roy and Seif Haridi · 2004
The publisher describes its goal as teaching programming as a unified discipline across paradigms; a programming-languages course lists it as required.
Shriram Krishnamurthi · 2012
A university course lists it as a required text, and an Open Textbook Library review praises its coverage of programming-language implementation.
Listed as Programming courses: