---
title: Programming Fundamentals
description: This topic covers the essential building blocks of writing computer code. You will understand variables, control flow, loops, functions, and basic data types, enabling you to write simple programs and transition to any specific programming language.
category: programming-tech
subcategory: computer-science
difficulty: beginner, intermediate, advanced
url: /subject/programming-fundamentals
---

# Programming Fundamentals

This topic covers the essential building blocks of writing computer code. You will understand variables, control flow, loops, functions, and basic data types, enabling you to write simple programs and transition to any specific programming language.

## Available Resources

1 Videos • 4 Books • 2 Courses • 6 Websites

## Courses

### 1. Structure and Interpretation of Computer Programs (MIT 6.001)

**Author:** Eric Grimson, Peter Szolovits, Trevor Darrell

The original course behind SICP: procedural and data abstraction, higher-order procedures, recursion, state and mutation, object-oriented design and building interpreters in Scheme. 20 lecture videos, notes, programming projects and exams with solutions teach learners to analyze and construct computational systems.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://ocw.mit.edu/courses/6-001-structure-and-interpretation-of-computer-programs-spring-2005/

**Tags:** sicp, scheme, functional-programming, abstraction, interpreters

### 2. CS61A: Structure and Interpretation of Computer Programs

Learn fundamental programming concepts with CS61A, an intro-level CS course from Pamela Fox et al. Explore structure & interpretation of programs!

**Difficulty:** Beginner | **Price:** Free

**Link:** https://cs61a.org/

**Tags:** cs61a, python, recursion, abstraction, interpreters

## Websites

### 1. CS50 Harvard

The official course site for CS50x, Harvard's introduction to computer science, taught by David J. Malan. Eleven weeks of lectures, problem sets, and a final project covering C, memory, Python, SQL, and web development.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://cs50.harvard.edu/x/

**Tags:** computer-science, c-programming, python, algorithms, intro-programming

### 2. Teach Yourself Computer Science

Oz Nova and Myles Byrne's opinionated syllabus for self-taught engineers, naming one best book and video course for each of nine core subjects. Gives a defensible study order and rough hour budgets per topic.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://teachyourselfcs.com/

**Tags:** cs-curriculum, self-study, algorithms, operating-systems, distributed-systems

### 3. codecademy.com

Codecademy is an online learning platform offering interactive, browser-based coding lessons across languages like Python, JavaScript, HTML/CSS, and SQL. It provides guided courses, hands-on projects, and practice exercises to build practical programming skills.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://codecademy.com

**Tags:** websites, technology-computer-science, computer-sciences

### 4. nand2tetris.org

Nand2Tetris.org offers a hands-on computer-architecture course that guides you from basic NAND gates to a working Hack computer and software stack. It provides project descriptions, HDL files, simulators, and tools (assembler, VM translator, compiler) plus links to the accompanying textbook.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://nand2tetris.org

**Tags:** websites, technology-computer-science, computer-sciences

### 5. LeetCode

Online judge with thousands of algorithm and data-structure problems sorted by difficulty, topic and company, plus timed contests, discussion threads and study plans. Regular practice builds fluency with common interview problem patterns and writing correct, efficient code under time pressure.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://leetcode.com

**Tags:** coding-interviews, algorithm-practice, data-structures, online-judge, problem-patterns

### 6. exercism.org

Exercism.org is a coding practice platform that offers language-specific tracks with hands-on programming exercises and automated tests. It provides mentor feedback and community code reviews to help learners strengthen core programming fundamentals.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://exercism.org

**Tags:** websites, technology-computer-science, computer-sciences

## Videos

### 1. 12 Beginner Python Projects - Coding Course

A freeCodeCamp video course that walks through building twelve small Python programs from scratch, one after another. It gives beginners practice applying loops, functions, and standard libraries in complete programs rather than isolated exercises.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://www.youtube.com/watch?v=8ext9G7xspg

**Tags:** python, projects, beginner-programming, freecodecamp, video-course

## Books

### 1. Python Crash Course

**Author:** Eric Matthes

A No Starch Press introduction to Python covering variables, lists, functions, classes, testing, and files, then three build projects: an arcade game, data visualizations with matplotlib, and a Django web application.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/1593276036?tag=edmonddante07-20

**Tags:** books, technology-computer-science, computer-sciences

### 2. Clean Code

**Author:** Robert C. Martin

Martin's guide to writing readable, maintainable software, covering naming, functions, comments, error handling and refactoring, with extended Java case studies. Readers finish able to recognise code smells and restructure existing code into smaller, clearer units.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/0132350882?tag=edmonddante07-20

**Tags:** books, technology-computer-science, computer-sciences

### 3. The Pragmatic Programmer

**Author:** Andrew Hunt, David Thomas

Hunt and Thomas collect seventy short practices on software craftsmanship, from DRY and orthogonality to tracer bullets, debugging and estimation. Readers gain a vocabulary and set of habits for making pragmatic day-to-day engineering decisions across any language.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/020161622X?tag=edmonddante07-20

**Tags:** books, technology-computer-science, computer-sciences

### 4. Think Like a Programmer

**Author:** V. Anton Spraul

Teaches problem-solving strategy rather than syntax, working through C++ exercises on arrays, pointers, recursion, classes, and code reuse. Readers practice decomposing unfamiliar problems into solvable pieces and building solutions without a template to copy.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/1593274246?tag=edmonddante07-20

**Tags:** problem-solving, c++, recursion, pointers, algorithmic-thinking

---

*This content is part of Dantes.io - Your Treasure Map to Knowledge*

*Curated by humans at Dantes.io. Personal study use welcome; republishing this curation requires permission (team@dantes.io).*

View this page online: https://dantes.io/subject/programming-fundamentals