Syllabus - High-Level Programming

High-Level Overview

The second and third trimesters cover languages, tools, and practices for both front-end and back-end development. It requires a gear shift from C and low-level programming; the syntax is very different and after the first trimester of programming functions from scratch in C, you may be surprised by how much heavy lifting Python does for you. 

You will create a complete web service with databases, back-end, and front-end website with the latest technologies. You will gain the skills to quickly learn and adapt to new frameworks for building products or to iterate on an existing codebase.

Second Trimester

  • Python
    • Basics
    • Object-Oriented Programming
    • Interpreted Languages
    • Test Driven Development
    • Error Handling
    • I/O
    • Web Scraping
  • Databases
    • SQL
    • MySQL
  • Airbnb (Web Development)
    • HTML
    • CSS
    • JSON
    • Unit Testing

Third Trimester

  • Airbnb (Web Development)
    • Javascript
    • JQuery
    • Deployment
    • APIs
      • Flask
  • Python
    • ORMs (SQLAlchemy)
    • Templating (Jinja2)
  • Regex

High-Level Basics

When programming in Python, take advantage of the Python interpreter to test your assumptions about your code before writing out your solutions.

Test-driven development can be a difficult mindset to get into, but it's ultimately a timesaving, more efficient way to program. Thinking about all the cases and edge cases first save you the trouble of debugging cases later. When you work on future projects, writing your own tests and running your solutions against them is an invaluable experience. 

During your second and third trimester, you will work on Hbnb, a large project that spans several weeks where you will build an Airbnb clone from scratch, developing both front-end and back-end as well as managing your own servers. (See: Airbnb)

FAQ

"Why aren’t we learning React in Foundations?"

There isn’t React in Foundations because you can’t start Javascript with React - it’s too complex, it’s too hard. We are building foundations here, not a framework. Javascript concepts are already hard enough, no need to add another level of complexity. 

However, this foundation and learning how to learn is giving you the tools to learn whatever framework or language you wish in the future.

"Why do we learn Python?"

It’s an OOO language, simple, clean, easy to set up, AND can run in almost every platform with “low cost” (CPU/Memory). It’s also used for web apps, scripts, etc.

Sure, there are other great languages, but again this is about learning fundamental concepts. Once you learn these things, it’ll be easy to pick up other languages and frameworks in the future. 

"Why don’t we do any mobile advanced web stack during Foundations?"

Foundations are just the beginning; there is so much to learn still, but we can’t possibly fit everything into a nine-month period. That’s why we offer Specializations : )

Resources

Corey Schafer on YouTube
Recommended by Adekunle Adeniran, Cohort 5, SF