Skip to main content
CF

Programming: Beyond the Basics

11h 14m 57s
English
Paid

There are countless ways to write any program. This course is designed so that you have all the tools necessary for fully expressing your ideas through code, including functional composition and recursion, object-oriented programming, and basic knowledge of parallelism.

If you are already familiar with the concepts discussed above, you can choose interesting tasks or move on to studying computer systems.

I also use this course to share my programming philosophy and my preferences in the approach to programming. I do not claim to have the final opinion on these matters, as there is no single correct way. Nevertheless, others have found my thoughts useful, and perhaps you will too.

The backbone of this course is a sequence of tasks for each topic. You should strive to solve each task, using ready-made solutions and additional explanations if necessary.

As additional material, I recommend "Composing Programs" by John DeNero or the classic textbook SICP, on which it is based, be it in the original version in Scheme or the newer version in JavaScript. For a more playful, task-oriented approach, I also recommend "The Little Schemer," especially on the topics of higher-order functions and recursion.

Primarily, I will be using Python as the main language, but you can work in another language if you prefer. Languages that do not support higher-order functions and/or classes may pose difficulties in adapting some tasks.

Additional

https://github.com/mharrisb1/csprimer/tree/main

About the Author: Oz Nova (CS Primer)

Oz Nova (CS Primer) thumbnail

Oz Nova is the founder of CS Primer (csprimer.com) and a co-founder of Bradfield School of Computer Science — an unusually rigorous CS-fundamentals education brand aimed at self-taught engineers filling in the formal computer-science foundations they didn't get from a four-year degree. The CS Primer course catalog goes deeper into the fundamentals than essentially any other paid online platform.

The course catalog covers compilers and language design, computer networks (from sockets through application protocols), distributed systems, computer architecture, operating systems, databases at the storage-engine level, and the algorithms / data-structures material taught at the level of a serious CS undergraduate course rather than an interview-prep cheat sheet.

The CourseFlix listing under this source carries 7 CS Primer courses spanning that range. Material is paid; CS Primer runs on per-course or membership pricing on the original platform. Courses are aimed at working software engineers ready to fill the foundational CS gaps that compound across a career.

Watch Online 17 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 17 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: 001 Luhn algorithm
All Course Lessons (17)
#Lesson TitleDurationAccess
1
001 Luhn algorithm Demo
01:13:12
2
002 Tic-tac-toe
58:30
3
003 A quick tour of iterators in Python
16:43
4
004 Reduce everything
39:54
5
005 Memoize
27:45
6
006 Basic recursion
49:05
7
007 Pretty print
22:41
8
008 Trampoline
35:35
9
009 Refactor life
01:23:51
10
010 Vector class
55:58
11
011 DIY objects
26:27
12
012 DIY basic inheritance
25:00
13
013 Bytecode interpreter
45:32
14
014 The two most common mistakes I see in data modeling
27:04
15
015 A complete beginners guide to deploying web applications
25:04
16
016 The only software development methodology I recommend cut
27:34
17
017 Looking inside the Python interpreter
35:02
Unlock unlimited learning

Get instant access to all 16 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Related courses

Frequently asked questions

What prerequisites are necessary for this course?
The course assumes a foundational knowledge of programming concepts, such as variables, loops, and basic data structures. Familiarity with Python will be beneficial since it is the primary language used. However, students can work in another language if they prefer, as long as it supports higher-order functions and classes. Prior exposure to object-oriented programming or functional programming concepts would also be advantageous.
What types of projects will I work on during the course?
Students will engage with a variety of tasks, including implementing the Luhn algorithm, developing a Tic-tac-toe game, creating a Vector class, and building a bytecode interpreter. These projects are designed to enhance understanding of functional composition, recursion, and object-oriented programming. There is also a task dedicated to deploying web applications, which provides a practical introduction to application deployment.
Who is the target audience for this course?
This course is aimed at programmers who have a basic understanding of coding and are looking to deepen their knowledge of programming paradigms such as functional composition and object-oriented programming. It's suitable for those interested in exploring programming philosophies and enhancing their problem-solving skills through practical tasks.
How does the scope of this course compare to similar courses?
Unlike introductory courses, this course delves into more advanced topics such as memoization, basic recursion, and the intricacies of the Python interpreter. It also includes philosophical discussions on programming approaches, offering unique insights not typically covered in standard programming courses. The course's emphasis on task-based learning and its philosophical elements set it apart from purely technical offerings.
What specific tooling or platforms are covered in the course?
The course primarily uses Python as the teaching language, focusing on its capabilities for functional programming and object-oriented design. Lessons also cover iterators, higher-order functions, and the Python interpreter's internals. Deployment skills are touched upon in a lesson dedicated to deploying web applications, which provides foundational knowledge in this area.
What topics are not covered in the course?
The course does not cover basic programming concepts such as syntax or simple data structures, as it assumes students have prior knowledge in these areas. It also does not delve into advanced computer systems or network programming, although it encourages students familiar with the course material to explore these areas independently.
How will the skills learned in this course benefit my career or further studies?
The skills acquired in this course, such as functional programming, recursion, and object-oriented design, are fundamental to many advanced programming tasks and are applicable across various languages and platforms. Understanding these concepts can enhance problem-solving abilities and prepare students for more complex courses or professional roles in software development, where such knowledge is highly valued.