Foundations: Introduction #
Warning: Work in Progress
We are still working to improve this page before releasing it to students. It may change considerably before first release. If you can see this message, congrats, you have been introduced to this material early to provide feedback!Use the edit page button at the bottom of this lesson to directly submit changes for consideration.
There are two schools of thought regarding computer science. When programs or the problems they solve grow too large, we can choose to teach people one of the two following solutions:
- Systems to discipline their work so they can collaborate in massive teams to deliver commercial projects.
- Powerful and flexible ways of thinking so they can be productive enough to solve the problem alone or in a far smaller team.
We aim to teach the second method - to introduce in a thoughtful and fun way these more powerful foundational concepts early. The introduction of Simply Scheme has further explanation if you’d like to better understand our approach.
Teaching this way means starting a bit further back in theory than most programming mentorship groups, but we can attest that building a solid foundation in theory first will make you learn faster, build better, and have you growing far beyond your peers who started by learning tools first instead of how to think about programs.
We’ll take a broad look at programming and build foundational good habits, with a focus on understanding the two core elements of programming:
- Data, which flows in and out of computer systems
- Functions, which read and transform data
Begin by reading the Course Outline, or skip to Lesson One.
mindmap root((Programs)) Functions Handling Arguments Returning Data Control Flow Recursion Data Primitives Strings Numbers Structures Lists Trees Maps