Creator: Nathaniel Shak
Welcome to StreetCode's Next Level Programming class! In this class we will go from knowing the basics of coding and having a couple of projects under our belt to learning some of the core concepts to really take your coding skills to the next level (hence, the name). This class will be taught using Python, specifically Python 2. The skills you learn in this class will be especially useful for anyone who wishes to pursue computer science more seriously in college or in any academic setting, people aiming to get into the tech industry one day as a software engineer, or people who just love coding and want to build some cool projects.
- Some Housekeeping and Getting Started with Python
- Getting Familiar with Python
- Lists and Dictionaries
- Let's get some practice
- Searching and an Introduction to Algorithmic Analysis
- More Practice
- An Introduction to Sorting
- Data Structures and Algorithms Practice
- Introduction to Recursion
- Recursion Practice
- Object-Oriented Programming (Classes)
- Exceptions and Advanced Control Flow
As one of our more advanced course offerings, it’s important to make sure you’re ready before diving into the material. Take a look at the prerequisites below and make sure you're up to speed there. If you're not sure, talk to a mentor or teacher - we can help you figure out if this class is for you, or if you should take one of the more introductory classes first.
If you're not ready for this material yet, don’t worry! This doesn’t mean you’re not smart enough to take this class – it just means it would probably be best for you to take a step back and spend some time mastering these things before attempting this material.
- Have a good understanding of control flow. This is the most important prerequisite. If you haven't heard the term control flow, before, that's fine - it just means understanding how things like while loops, if and else statements, and for loops work and how they fit together. You should be fairly familiar with all of these and should have used them many times in whatever languages you've coded in in the past.
The rest of these are a bit more self explanatory, so I'll just list them out. You should know what all of these are and have used them in your code before:
- Variables
- Functions and parameters
- Booleans and operations (you should be familiar with statements like
num == 3
andnum = num + 2
)
You should be able to look at code like this and tell what it will print out.
a = 0
while a < 20:
a = a + 2
if a == 12:
print "I'm skipping this number because I don't like it."
else:
print a
Yes, it's fine if you haven't coded Python before (that's Python).
Again, if you don't feel like you're ready to take this class based on these criteria, don't worry. Learning how to code, like all things, takes patience and time. There’s nothing wrong with taking the time to go back and make sure you've mastered these things before taking this class.
Don't worry if you're unfamiliar with a lot of these or don't know what they mean. That's why we're learning them!
- Advanced control flow (collections, exceptions)
- Object oriented programming (classes)
- Recursion
- Data structures (lists/tuples, dicts, sets, trees, graphs)
- Decomposition
- Algorithmic analysis (Big O notation, space and time complexity)
- Various algorithms (sorting, graph traversal)
Students should leave this class with:
- A solid understanding of Python.
- A working knowledge of Git.
- The programming toolkit to build complex and comprehensive projects that require high-level algorithmic thinking.
- An understanding of good coding style and the concept of writing "good code" vs "code that works", how to effectively decompose and write readable code.
- The skillset to troubleshoot and debug their own code, how to independently research various kinks that come up while coding. AKA: "being good at Googling".
- The tools to succeed in technical interviews and beginner-level software internships.
Anyway, let's get started!