RedLectern topic

Computer Science

Explore foundational ideas in computation, programming, algorithms, computer systems, and computational approaches to data.

For: Learners at any starting point, including people new to programming and those returning to study a specific area.

After this page you can: Choose a suitable next learning path and explain how a small computational problem can be represented, solved, and checked.

Page reviewed

About Computer Science

Computer science studies the intellectual work of computation: representing problems, designing procedures to solve them, and reasoning about the systems that carry them out. Introductory courses connect computational thinking with algorithms, data structures, abstraction, and programming, while broader study can include software, security, and web programming. The subject is larger than learning one programming language, and learners can approach it from practical, mathematical, or systems-oriented starting points. Harvard’s introductory syllabus describes the field through algorithmic thinking and problem solving, and lists abstraction, algorithms, and data structures among its topics. MIT’s introductory programming course frames computation as a way to solve problems and write small programs for useful goals.

A useful way to study computer science is to move between ideas and examples. Begin with programming to express a procedure and test it on concrete inputs; then examine algorithms and data structures to ask whether a solution is correct and how it handles growth. Study computer systems to connect software abstractions to the digital structures beneath them, and use data science to see how computation can support analysis of data. Practice by explaining a solution, trying examples that could expose mistakes, and refining the representation or procedure. MIT’s introductory course includes programming problem sets, while its data science course syllabus lists topics such as graph-theoretic models and stochastic thinking. These routes overlap, so you can begin with the question or goal that interests you.

Start here

route

I’m returning to the foundations

Use a broad introduction to revisit core ideas and identify a branch to pursue.

Start with: CS50x: Introduction to Computer Science

Learn the foundations

1.Express ideas with programsProgramming gives you a way to express procedures, test them on examples, and revise them when they do not solve the intended problem.

Programming gives you a way to express procedures, test them on examples, and revise them when they do not solve the intended problem.

Program

A set of instructions that a computer can carry out to perform a task.

Abstraction

A way to focus on selected details of a problem or system while setting aside others.

Try it

Write a three-step procedure for deciding whether a number is even, then try it with 8 and 5.

Check whether the number divides by 2 with no remainder; if so, call it even, otherwise call it odd. The procedure labels 8 even and 5 odd.

2.Reason about algorithms and data structuresAlgorithms and data structures help describe computational procedures and the ways information is organized for those procedures.

Algorithms and data structures help describe computational procedures and the ways information is organized for those procedures.

  • CS50x Syllabus

    The syllabus includes algorithms and data structures among its introductory topics.

Data structure

A way of organizing data so a program can work with it.

Try it

Describe a procedure for finding the largest value in a short list of numbers.

Keep the first value as the current largest; inspect each remaining value and replace the current largest whenever a greater value appears. For the list 4, 2, 7, the result is 7.

3.Connect programs to computer systemsComputer systems study connects hardware and software abstractions, from digital building blocks to complete systems.

Computer systems study connects hardware and software abstractions, from digital building blocks to complete systems.

  • Computation Structures

    The course traces digital systems through logic gates, circuits, state machines, computers, and complete systems.

Digital system

A system built from digital components and mechanisms that can perform computation.

State machine

A model of a system in terms of states and transitions between them.

Try it

Model a simple door with two states, open and closed, and name one event that changes its state.

The door has an open state and a closed state; a close event can change it from open to closed.

4.Build mathematical foundationsDiscrete mathematics gives computer science tools for describing structures, proving statements, and analyzing computational processes.

Discrete mathematics gives computer science tools for describing structures, proving statements, and analyzing computational processes.

  • Mathematics for Computer Science

    MIT presents the subject as elementary discrete mathematics with mathematical tools and proof techniques useful in computer science.

Invariant

A property that remains true as a process changes state.

Induction

A proof method that establishes a starting case and shows that one case leads to the next.

Try it

For the sequence 2, 4, 6, 8, state a property that remains true and give the next value.

Each listed value is even, and the next value in the sequence is 10.

5.Use computation to study dataMIT’s syllabus lists graph-theoretic models as a topic in computational thinking and data science.

MIT’s syllabus lists graph-theoretic models as a topic in computational thinking and data science.

Simulation

A computational model used to explore the behavior of a process.

Data analysis

Using methods such as sampling and statistical summaries to examine data.

Try it

A bag has 3 red counters and 1 blue counter. Describe a simple simulation for drawing one counter at random.

Represent the bag with three red entries and one blue entry, then select one of the four entries at random. The model gives red three of the four possible entries.

Explore subtopics

Latest

No recent updates are available.

See the sources list

Books

Glossary

Every free Computer Science course and book on RedLectern

Free Computer Science online courses

  1. Affective ComputingMIT MAS.630 · Browse materials
  2. Biomedical ComputingMIT HST.950J · Browse materials
  3. Computing and Data Analysis for Environmental ApplicationsMIT 1.017 · Browse materials
  4. Computing for Biomedical ScientistsMIT HST.952 · Browse materials
  5. Cultures of ComputingMIT 21A.350J · Browse materials
  6. Elliptic CurvesMIT 18.783 · Browse materials
  7. Elliptic CurvesMIT 18.783 · Browse materials
  8. Fundamentals of Program AnalysisMIT 6.820 · Browse materials
Show all 34 coursesShow fewer courses
  1. Great Ideas in Theoretical Computer ScienceMIT 6.080 · Browse materials
  2. Histories of Information, Communication, and Computing TechnologiesMIT STS.460 · Browse materials
  3. Introducing computing and ITThe Open University (OpenLearn) · Browse materials
  4. Introduction to Computational Thinking and Data ScienceMIT 6.0002 · Browse materials · Video
  5. Introduction to Computer Science and Programming in PythonMIT 6.0001 · Browse materials · Video
  6. Introduction to Design ComputingMIT 4.500 · Browse materials
  7. Introduction to Electrical Engineering and Computer Science IMIT 6.01SC · Browse materials · Video
  8. Mathematics for Computer ScienceMIT 6.042J · Browse materials · Video
  9. Mathematics for Computer ScienceMIT 6.1200J · Browse materials · Video
  10. Medical ComputingMIT HST.950J · Browse materials
  11. Parallel ComputingMIT 18.337J · Browse materials
  12. Structure and Interpretation of Computer ProgramsMIT 6.001 · Browse materials · Video
  13. Topics in Theoretical Computer Science: An Algorithmist's ToolkitMIT 18.409 · Browse materials
  14. Topics in Theoretical Computer Science: Probabilistically Checkable ProofsMIT 18.408 · Browse materials
  15. Case Studies in Social and Ethical Responsibilities of ComputingMIT RES.TLL-007 · Open on OCW
  16. Genomics, Computing, Economics, and SocietyMIT HST.510 · Open on OCW
  17. Introduction to Computer Science and ProgrammingMIT 6.00 · Open on OCW
  18. Introduction to Computer Science and ProgrammingMIT 6.00SC · Open on OCW
  19. Mathematics for Computer ScienceMIT 6.042J · Open on OCW
  20. Mathematics for Computer ScienceMIT 6.042J · Open on OCW
  21. Mathematics for Computer ScienceMIT 6.042J+summer_2019 · Open on OCW
  22. Operating System EngineeringMIT 6.1810 · Open on OCW
  23. Pervasive Human Centric Computing (SMA 5508)MIT 6.883 · Open on OCW
  24. Social and Ethical Responsibilities of Computing (SERC)MIT RES.TLL-008 · Open on OCW · Video
  25. The History of ComputingMIT STS.035 · Open on OCW
  26. Topics in Theoretical Computer Science : Internet Research ProblemsMIT 18.996 · Open on OCW
How these courses are chosen

Listed as Computer Science courses:

  • those whose title contains “Computer Science” or “computing”, or
  • those tagged “Computer Science” or “computing” as one of at most 2 topic tags, or as the first of 3.

Free Computer Science textbooks and books

Show all 45 booksShow fewer books

Questions and comments