Skip to content

nathanielshak/advancedprogramming

Repository files navigation

Next Level Programming

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.

Lessons

  1. Some Housekeeping and Getting Started with Python
  2. Getting Familiar with Python
  3. Lists and Dictionaries
  4. Let's get some practice
  5. Searching and an Introduction to Algorithmic Analysis
  6. More Practice
  7. An Introduction to Sorting
  8. Data Structures and Algorithms Practice
  9. Introduction to Recursion
  10. Recursion Practice
  11. Object-Oriented Programming (Classes)
  12. Exceptions and Advanced Control Flow

Prerequisites for taking this class

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.

So, what should I know before starting this class?

  • 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 and num = 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.

So, what will I learn from 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!

Topics

  • 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)

Skills

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!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages