Code 401: Advanced Software Development in Python

Code 401: Advanced Software Development in Python

Apply

Overview

Learn the language used at NASA, Instagram, Dropbox, and other big-data companies as you build professional-grade apps in Python.

Throughout this intensive course, you will study professional software development techniques and practices as you advance your skills in Python. This course includes career development curriculum to get you ready for your job search, plus job search assistance after graduation.

Daytime and Nights & Weekend tracks are each 400 hours total. Course hours include lecture, lab, and coworking.

Outcomes

At the end of this course students will be able to attain an entry-level Python web developer job by:

  • Being able to take project ideas from conception all the way through full-stack execution and deployment using common Python frameworks and deployment tools.
  • Contributing to existing and ongoing projects using professional version-controlled workflows, working in tandem with their classmates on collaborative assignments.
  • Fully understanding the interaction between the code as it is written, the data on their machine, and the result that gets served to the client/browser.
  • Writing secure web apps that can deter hackers from exploiting the most common vulnerabilities in their sites.
  • Developing a portfolio of assigned and self-directed projects, as well as building their own code libraries of algorithms and data structures commonly found in computer science and software development.
  • Regularly engaging in code review, attaining the ability to understand someone else’s code, collaborating with a team of coders of varying levels of experience, and suggesting improvements to the code base in question.
  • Given a series of career development workshops and the web development knowledge, experience, habits, and practices learned in this course, students will create an online brand, network, and resume; and will demonstrate aptitude in personal and technical interviews of varying formats, in order to conduct a successful job search and obtain a job as a Python Web Developer.

Prerequisites

  • Code 301
    • Students with previous experience can test out of this requirement in their application. If you'd like to test straight into this course, please make sure you have experience with all of the topics listed on the Code 201 and Code 301 course pages.
  • All students are expected to complete the prework for this course before the first day of class.

Topics

Python

  • Syntax
    • Classes
    • Control Structures
    • Lambdas
    • Decorators
    • Iterators
    • Generators
  • Using common patterns
    • Object-Oriented Programming
    • Functional Data Manipulation
    • Open Source Contribution
  • Data Analysis
    • Statistics
    • Numpy
    • Scipy
    • Pandas
    • Scikit-Learn
  • Machine Learning
    • Feature Selection
    • Model Evaluation
    • Data Validation
    • Linear Regression
    • K-Nearest Neighbors Classification Algorithm
    • K-Means Classification Algorithm

Frameworks & Development Patterns

  • Pyramid
    • RESTful APIs
    • User Authentication and Authorization
    • URL Dispatch and Traversal
    • ORMs and the Persistence of Data
  • Django
    • The Admin
    • MVC Structure
    • Project Structure as an Aggregation of Apps
    • OWASP Top 10 Web App Vulnerablities
  • VirtualENV
    • Managing Dependencies
    • Ansible
    • AWS
    • Heroku
  • Deployment
    • Fabric
    • Using PIP Effectively

Collaboration & Open Source

  • Pair Programming
  • Group Projects
  • GitHub
    • Repositories
    • Forking
    • Cloning
    • Pull Requests
    • Collaborators
  • How to Learn from Available Resources

Data Structures & Algorithms

  • Linked Lists
  • Heaps and Priority Queues
  • Graphs
  • Graph Traversal Algorithms
  • Trees
  • Binary Search
  • Sorting Algorithms
  • Daily Whiteboard Interview Practice

Career Development Curriculum

Two full days of Code 401 are dedicated to workshops and presentations that teach students the skills they'll need for their job search, such as personal branding techniques, effective networking practices, how to create an attractive resume, mastering personal and technical interviews, job search best practices, and more. An additional one-day job search strategy workshop is held in the week after graduation.

Additionally, during each Project Week, students present projects that will go into their professional portfolio. Learn More »

Learn with Stacked Modules

Concepts in each of our courses are taught using stacked modules, where a new concept is introduced in each class session, building upon what came before it. This is a challenging style that requires persistence, practice, and collaboration, but allows more concepts to be introduced over the length of the course. This method helps students learn and retain more information in a short period of time. Learn more about stacked modules »

Computer Requirements

Students are required to bring their own laptop with plenty of free space on the hard drive. Most students use Macs, simply because they are easy to work with. Others install Linux on their laptops. We don’t encourage students to use any version of Windows unless they are already Windows development gurus. By the first day of class, students will need:

  • Python version 2.7
  • Mac OS X: Xcode (v5) from the Mac App Store with the command line tools
  • Linux: Windows machines set up to dual-boot a Linux operating system. We recommend Ubuntu. A C-compiler and the Python development headers will also need to be installed.
  • The latest version of Google Chrome
  • A GitHub account

If you would like to set up your Windows machine to dual boot to Linux, check out these guides:

Homework Policy

In order to pass the class, students must attain at least 90% of available points.

Professionalism

Punctuality, participation in discussions, completion of assignments, and demonstration of professional courtesy to others are required, in accordance with our Code of Conduct. Attendance will be taken at the beginning of every class. Passing requires at least 90% attendance. Students should always contact the instructors ahead of time if they are unable to attend all or part of published class / lab hours.

Apply Now