Skip to content

Latest commit

 

History

History
1309 lines (814 loc) · 70.7 KB

cs-fsw.md

File metadata and controls

1309 lines (814 loc) · 70.7 KB

Skip to main content


Lambda Launch

1.  Lambda Orientation


Web Fundamentals

1.  User Interface and Git

2.  Advanced CSS and Intro JavaScript

3.  JavaScript Fundamentals

4.  WEB Unit 1 Build


Web Applications I

1.  Applied JavaScript

2.  Intro to React

3.  Single Page Applications

4.  WEB Unit 2 Build


Web Applications II

1.  Advanced React

2.  Advanced State Management

3.  Advanced Web Applications

4.  WEB Unit 3 Build


Web API: Node

1.  Build a Web API

2.  Adding Data Persistence

3.  Authentication and Testing

4.  WEB Unit 4 Node Build


Web API: Java

1.  Java Precourse Information

2.  Java Fundamentals

3.  RDBMS and Intro to APIs

4.  Java Frameworks

5.  WEB Unit 4 Java Build


Computer Science

1.  Computer Science Fundamentals

2.  Data Structures and Algorithms I

3.  Data Structures and Algorithms II

4.  Data Structures and Algorithms III


Web Annex

1.  User Interface and Git

2.  Advanced CSS

3.  JavaScript Fundamentals

4.  Single Page Applications

5.  Authentication and Testing


Computer Science Legacy

1.  Intro to Python and OOP

2.  Data Structures

3.  Algorithms

4.  CS Unit 1 Build

5.  Hash Tables

6.  Graphs

7.  Computer Architecture

8.  CS Unit 2 Build


Lambda Labs

1.  Welcome to Lambda Labs

2.  Sprint 1 - Planning a Project

3.  Sprint 2 - Demonstrating Contribution

4.  Sprint 3 - Giving and Receiving Feedback

5.  Sprint 4 - Presenting Your Work



Computer Science Annex

1.  Data Structures: Heaps

2.  Intro to Django

3.  Python/Django I

4.  Python/Django II/Career Development

5.  Python/Django III/Career Development

6.  Project Week: Cellular Automata

7.  C Programming Topics


Lambda Launch

1.  Lambda Orientation


Web Fundamentals

1.  User Interface and Git

2.  Advanced CSS and Intro JavaScript

3.  JavaScript Fundamentals

4.  WEB Unit 1 Build


Web Applications I

1.  Applied JavaScript

2.  Intro to React

3.  Single Page Applications

4.  WEB Unit 2 Build


Web Applications II

1.  Advanced React

2.  Advanced State Management

3.  Advanced Web Applications

4.  WEB Unit 3 Build


Web API: Node

1.  Build a Web API

2.  Adding Data Persistence

3.  Authentication and Testing

4.  WEB Unit 4 Node Build


Web API: Java

1.  Java Precourse Information

2.  Java Fundamentals

3.  RDBMS and Intro to APIs

4.  Java Frameworks

5.  WEB Unit 4 Java Build


Computer Science

1.  Computer Science Fundamentals

2.  Data Structures and Algorithms I

3.  Data Structures and Algorithms II

4.  Data Structures and Algorithms III


Web Annex

1.  User Interface and Git

2.  Advanced CSS

3.  JavaScript Fundamentals

4.  Single Page Applications

5.  Authentication and Testing


Computer Science Legacy

1.  Intro to Python and OOP

2.  Data Structures

3.  Algorithms

4.  CS Unit 1 Build

5.  Hash Tables

6.  Graphs

7.  Computer Architecture

8.  CS Unit 2 Build


Lambda Labs

1.  Welcome to Lambda Labs

2.  Sprint 1 - Planning a Project

3.  Sprint 2 - Demonstrating Contribution

4.  Sprint 3 - Giving and Receiving Feedback

5.  Sprint 4 - Presenting Your Work



Computer Science Annex

1.  Data Structures: Heaps

2.  Intro to Django

3.  Python/Django I

4.  Python/Django II/Career Development

5.  Python/Django III/Career Development

6.  Project Week: Cellular Automata

7.  C Programming Topics

Full Stack Web Development

Intensive computer science and software engineering training. Learn computers, software engineering and web development top to bottom.


Lambda Launch

Lambda Launch material is now updated and available in Canvas. As of August, all material shown in Training Kit is deprecated.


Web Fundamentals

Having the ability to craft user interface is key for full stack web developers in all organizations. Another key ability for professional developers is knowing how to use git. This week we will cover those skills and more, and work to create several fully functional websites, including a multi-page portfolio site to showcase your work at Lambda.

The goal of this sprint is to build user interfaces and introduce git into our work flow. Concepts covered: Semantic HTML, display types, basic terminal use, basic git use, CSS specificity, and flex box.

You’ve already started using responsive units to write high-quality stylesheets. In this sprint we’ll expand on that knowledge by covering responsive layouts, media queries, and accessibility such that you can build websites to work on mobile devices too!

This sprint will also introduce you to the wild world of JavaScript. We’ll cover variables, conditionals, loops, functions, arrays, and objects. These basic skills will be crucial as you go on to create dynamic and interactive web pages during your time at Lambda School.

Everything we teach for the first 14 weeks of your experience here at Lambda School revolves around software engineering for the web. One of the most powerful web languages is JavaScript. Without it, there is no web. All web browsers use JavaScript in some fashion to power rich user experiences for those interacting with a web page or application.

JavaScript is everywhere today! And we have the opportunity here to dive deep enough into the language to teach you how to be proficient in building modern, complex and beautiful web applications that are used to power the web today!

It’s time to put all your fundamentals to the test. Being able to combine HTML, CSS, JavaScript, Libraries, and Programming Paradigms into a project is a rare skill indeed.

For your project this week, you will demonstrate proficiency by working with a group of students cross-section to deliver a minimum viable product (MVP) over the course of the week.

Git for Build Sprint

Just now I’m sure you were wondering where on earth you could find some essential guidance on navigating Git and GitHub workflows during Build Sprint. Good news! It’s right here!

Git for Build Sprint

Your primary role User Interface Developer:

  • You will build a multi-page marketing website that matches the theme chosen by your group and provides the user with details about the product your team has selected to build.
  • Your marketing website must include responsive mobile and desktop screen widths. Please see the “Responsiveness” portion of your rubric for more information on this.
  • The call to action on the website should be a login button that links the user over to the React application that your Front End Architect is building.
  • Your marketing website must be hosted on a hosting platform like “Netlify” or “Github Pages”.
  • For this Marketing site’s home page you need to have content and copy that relates to the product that your team is working on.
  • Descriptions about the product and about the features it provides would be key.
  • For a second page, you could do an about us section that includes images of the members of your team, and links to one another’s socials/Github.

Your Grading Rubric:

Please review this rubric and fully demonstrate an understanding of your product role by submitting a message to your Project Manager with questions you have.

Rubric

Build Sprint Overview:

Still have questions about your build sprint? Here’s a breakdown:

Full-time student overview

Part-time student overview


Web Applications I

This week is all about exposing you to applying your Javascript knowledge to the Document Object Model and creating rich Javascript user interfaces.

React is a UI library that is used in various forms to create complex, rich user interfaces. Facebook had a need to build something that could power their user experiences in such a way that was decoupled and unconcerned when and where the data was received.

React is one of the most popular UI libraries today, and in terms of Single Page Applications many (including the React team) tend to think of the library as the “V” in MVC. That is, the View layer of the Model, View, Controller paradigm. React is a pattern, a mindset, that will help developers that use it, build small, reusable pieces of UI that can be easily put together to make a large scale application.

This week we’ll be learning about using three important concepts in react - routing, forms, and testing. With the UI Library (React), the Client Side Routing Library (React Router), the Form library Yup, and the testing app Cypress, you’ll be able to craft rich, robust and highly scale-able Single Page Applications.

The approach here is to expose you to this concept of a Single Page Application that doesn’t concern itself with the data that it will be presenting to the user. This is how modern applications are built today, where the client (React App) and server are separated out into their own concepts.

Grading Rubric Link:

Use this rubric to help guide your development processes.

Build Sprint Overview:

Still have questions about your build sprint? Here’s a breakdown:

Full-time student overview

Part-time student overview


Web Applications II

It’s time to put all your fundamentals to the test. Being able to combine the knowledge of building Static Websites with your newly found knowledge of ReactJS and its corresponding packages and libraries is what this unit is all about.

Web Application Development Role Description

React JS has been your focus over the last 4 weeks. You will use those skills learned during the React Unit to build out a web application that consumes a CRUD API.

For your project this week, you will demonstrate proficiency by working with a group of students cross-section to deliver a minimum viable product (MVP) over the course of the week.

Your primary role as the Web Application Architect:

You will use your skills to be responsible for the Front End Architecture of this project. You will work directly with the UI Developer and the Back End Developer to ensure that all React components are wired up in proper fashion.

Grading Rubric Link:

Use this rubric to help guide your development processes.

Build Sprint Overview:

Still have questions about your build sprint? Here’s a breakdown:

Full-time student overview

Part-time student overview


Web API: Node

This week we’ll learn how to build web services based on the REST (REpresentational State Transfer) architectural style.

We’ll learn about Node.js, a runtime environment used to execute JavaScript code outside the browser and the popular Express framework that makes it really easy to write web applications, and web services, on top of Node.js.

This week we’ll learn about databases, what they are and how to use them from our Web APIs.

Databases are ubiquitous in just about everything we do, they power our mobile devices, the sites we visit every day, the applications we use and even some of the appliances in our homes. In short databases are the containers of humanity’s digital assets. Every time you hit a Save button data goes into a database!

The world of databases is large and complex. There are full careers built around them. Fortunately we’ll approach them from the point of view of a developer and leave all other unneeded complexity for the curious to explore.

Authentication is one of the largest concepts that we get to tackle in such a short period of time. Have you ever wondered what happens when you “log in” to a website? Well this week we get a chance to learn all about that. When a user inputs data into a username/password form and clicks login, what then happens to that data? How does the site the user is working with even know that the data it is showing pertains to that specific user? This all has to do with what we call Authentication.

This concept is HUGE. People spend their entire careers hovering around this single ideal. Auth ties in the principles of Server Sessions Password Encryption/Hashing Security Risks JSON Web Tokens and the use of different types of Middlewares and many other ideas. And what we are able to tackle here in the “Web” portion of the Lambda School Computer Science Academy portion will pale in comparison to what you can learn further on your own. And don’t worry, we talk more about this when you get to the 2nd half of the course.

Back-end Development Role Description

You have been learning all about NodeJS and Express and SQL in order to craft Web Servers and build API’s for consumption by client-side applications. You will use these skills to be in charge of building out the back-end API for your project.

Your primary role as a Back-end Architect

You will use your skills to be responsible for the back-end architecture of this project. You will work closely with your Front End Architect and your Scrum Master in order to discover project needs and deliver working Endpoints for your application.

Grading Rubric:

Use this rubric to help guide your development processes.

Build Sprint Overview:

Still have questions about your build sprint? Here’s a breakdown:

Full-time student overview

Part-time student overview


Web API: Java

I am glad you are taking the time to look at the Java Course. Of course, I am biased but I think it is a great course. By the way, I am the instructor, John Mitchell! However, I want you to make an informed decision. Should you pursue the Java track or stay with the JavaScript Node track? Keep reading and find out!

This section also includes a list of some of my favorite Java Resources and, in case you decide to take the class, instructions on installing the necessary software!

The fundamentals of Java are discussed during these modules. Specific emphasis is placed on Java constructs needed for Web API programming with the Spring Framework. Topics include:

  • Using the Standard JDK
  • OOP
  • Java Types
  • Java Classes
  • Interfaces
  • Abstract Classes
  • Lambda Expressions
  • Using GitHub with Java
  • Use JetBrains IntelliJ IDEA IDE
  • Dependency Injection
  • SQL
  • RDBMS
  • Query Single Table
  • Query Multiple Table
  • PostgreSQL
  • REST API
  • Maven, Spring, Tomcat

Developing Web APIs using Java and the Spring Framework and connecting those to a PostgreSQL database is the focus of these modules. Topics include:

  • Build REST API with Spring Boot
  • Beans
  • Maven Phases
  • CRUD
  • CRUD Using SQL
  • CRUD Using JPA
  • Seeding using JPA
  • Seeding using SQL
  • Data Normalization
  • Advanced Queries

Enhancing our Web APIs with exception handling, automated testing, and finally deployment is the focus of these modules. Topics include

  • Exceptions Handling
  • Exception Java Constructs
  • Swagger
  • Automated Testing
  • JUnit and Others
  • Deploying Locally
  • Deploying to the Cloud
  • Connecting to a JavaScript Front End
  • CURL

You have been learning all about Java, the Spring Framework and SQL in order to craft Web Servers and build API’s for consumption by client-side applications. You will use these skills to be in charge of building out the back-end API for your project.

Your primary role as a Back-end Web API Java Architect You will use your skills to be responsible for the back-end architecture of this project. You will work closely with your Front End Architect and your Scrum Master in order to discover project needs and deliver working Endpoints for your application.

Grading Rubric Link:

Use this rubric to help guide your development processes.

Build Sprint Overview:

Still have questions about your build sprint? Here’s a breakdown:

Full-time student overview

Part-time student overview


Computer Science


Web Annex

Legacy Content. We are constantly improving your curriculum experience. This content was changed April 3, 2020 and is reference only if you started Lambda before April 2020

Having the ability to craft user interface is key for full stack web developers in all organizations. Another key ability for professional developers is knowing how to use git. We cover both topics throughout the week culminating in a multi-page website sprint challenge.

The goal of this sprint is to build user interfaces and introduce git into our work flow. Concepts covered: Semantic HTML, box model, display types, layout techniques, flex box, basic terminal use, basic git use.

Legacy Content. We are constantly improving your curriculum experience. This content was changed April 3, 2020 and is reference only if you started Lambda before April 2020

Responsive design pushes our basic CSS styling forward into thousands of devices. A growing trend in today’s markets continue to be mobile devices that range from large tablets to small screens. You need to be able to correctly deliver content to all of these mediums.

Preprocessors introduce variables, scoping, mixins, and functions into CSS allowing for a more robust programming experience. Most development shops rely heavily on preprocessors to get large amounts of work done across multiple teams. Learnings how to use preprocessors will increase overall CSS productivity, reduce errors, and prepare students for the workplace.

Preprocessing is a great introduction to JavaScript concepts like scope, variables, and DRY code paradigms.

Legacy Content. We are constantly improving your curriculum experience. This content was changed April 3, 2020 and is reference only if you started Lambda before April 2020

Everything we teach for the first 14 weeks of your experience here at Lambda School revolves around software engineering for the web. One of the most powerful web languages is JavaScript. Without it, there is no web. All web browsers use JavaScript in some fashion to power rich user experiences for those interacting with a web page or application.

I love to look at JavaScript through this analogy. Think of a web page as a house. You need someone to architect and get in the structure of your house, someone to add in the design, and someone to add in the electricity to power the house. If you were to think about HTML, CSS and JavaScript as the three necessary building blocks, for a web page, HTML could be the architecture/layout of what your house should be, CSS is the design/style of your house and JavaScript powers the electrical interactions that our house needs to have in order to be functional.

JavaScript is everywhere today! And we have the opportunity here to dive deep enough into the language to teach you how to be proficient in building modern, complex and beautiful web applications that are used to power the web today!

Legacy Content. Removed from curriculum March, 2020

This week we’ll be learning about using two very useful packages with React: React Router and Formik. With the UI Library (React), the Client Side Routing Library (React Router), and the Form library Formik, you’ll be able to craft rich, robust and highly scale-able Single Page Applications.

The approach here is to expose you to this concept of a Single Page Application that doesn’t concern itself with the data that it will be presenting to the user. This is how modern applications are built today, where the client (React App) and server are separated out into their own concepts.

Legacy Content. Removed from curriculum March, 2020

Authentication is one of the largest concepts that we get to tackle in such a short period of time. Have you ever wondered what happens when you “log in” to a website? Well this week we get a chance to learn all about that. When a user inputs data into a username/password form and clicks login, what then happens to that data? How does the site the user is working with even know that the data it is showing pertains to that specific user? This all has to do with what we call Authentication.

This concept is HUGE. People spend their entire careers hovering around this single ideal. Auth ties in the principles of Server Sessions Password Encryption/Hashing Security Risks JSON Web Tokens and the use of different types of Middlewares and many other ideas. And what we are able to tackle here in the “Web” portion of the Lambda School Computer Science Academy portion will pale in comparison to what you can learn further on your own. And don’t worry, we talk more about this when you get to the 2nd half of the course.


Computer Science Legacy

Learn the Python programming language and the basics of the Object-Oriented Programming (OOP) paradigm.

In this sprint, you will learn several fundamental data structures, including linked lists, queues, and binary search trees. You will also get your first taste of traversals, which will help prepare you for the upcoming module on graphs.

You will also learn how to analyze the complexity of algorithms that make up the methods associated with each data structure. These include inserting, deleting, searching for, and sorting elements. You will practice classifying algorithms using Big O notation, and learn how to compare different operations against each other using these runtime classifications.

In your core programs, you’ve most likely used many data structures without thought. You’ve called your variants of .append() and other functions without really worrying about how or why they work. This is your opportunity to see “under the hood” and gain an engineers understanding of how these structures work and what pitfalls you must be careful of.

Indeed, data structures are extremely prevalent and fundamental when it comes to understanding programming and computer science. By the end of the Computer Science curriculum, you’ll have a good idea of the answers to important questions that were raised during the web curriculum such as ‘how do web servers such as Express effectively and efficiently handle hundreds or thousands of concurrent requests simultaneously?’ or ‘how does a database organize the data that it stores in such a way that it can then retrieve it as quickly as possible?’. Such questions can be answered in part by having an understanding of both the wide berth of all the currently-existing data structures that have been dreamt as well as an adequately deep understanding of how many common data structures work.

In this sprint, we’ll learn to implement several fundamental data structures that are very often used as the building blocks of more complex and specialized data structures. These are the:

  • Singly Linked List
  • Queue
  • Stack
  • Doubly Linked List  - Binary Search Tree

Each of these data structures has its own associated strengths and weaknesses. Think of each of them as a tool in a toolbox. You have entirely different classes of tools such as hammers and wrenches that are each used for entirely different use cases. You also have multiple types of screwdrivers. Both are used for tightening and untightening screws, but the Phillips screwdriver is better for certain screws and the flathead screwdriver is better for other types of screws.

The same can be said of data structures. There are many instances of wildly different data structures that serve entirely different use cases, and then you have data structures that can both perform the same function, but one will be better at it than the other. More specifically, you could emulate the functionality of a JavaScript Array using an Object, but an Object isn’t going to perform as efficiently when it comes to certain tasks that Arrays are really efficient at.

A Note About Data Structures in Different Language Contexts

Let’s go back to the topic of linked lists seeming redundant in Python. Why do we need to learn about linked lists when Python already provides for us such a full-featured array implementation (via lists) that can already do everything a linked list can do? Sure, linked lists have marginally better performance on certain operations when compared to arrays, but does that really justify the existence of the linked list data structure?

These are all entirely valid points; working in Python does obviate the need to implement certain data structures such as linked lists and hash tables. This brings us to a core tenet of the Computer Science curriculum: the material that you’ll be exposed to and learning about in the Computer Science curriculum will be almost entirely language-agnostic. Seasoned developers and programmers learn to sever the connection between coming up with a solution to a problem they’re facing, and actually implementing that solution. That probably doesn’t mean a lot right now, but as you go on to expand your knowledge horizons by learning about other programming languages such as C, you’ll come to realize that different languages place different constraints on the programmer. Notably, in C, there is no full-featured array implementation. There’s also no built-in hash table. Thus, you’ll find that when it comes time to work in C, knowing how to implement data structures that seem obsolete in Python will have a payoff.

Additional Resources

  1. https://www.interviewcake.com/article/python/data-structures-coding-interview?course=dsa does a great job of motivating and introducing most of the data structures we cover in this sprint.

  2. A great video explaining heaps and how they work: https://www.youtube.com/watch?v=WCm3TqScBM8

In this sprint, students will be introduced to how to formally think about and solve algorithmic problems as part of the Algorithms module. Some classic algorithmic paradigms will also be introduced.

Just as importantly, students will also learn how to analyze the complexity of algorithms. Students will practice classifying algorithms using Big O notation, and learn how to compare different algorithms against each other using these runtime classifications.

CS Build Week 1: Conway’s “Game of Life”

Non-DS Students

Conway’s Game of Life is a venerable old algorithm that simulates “life” on a 2D grid. It’s a class of algorithm known as a cellular automaton.

DS students have the option to implement this project, or the DS-specific projects, below.

DS Students

You have the option of doing the Game of Life project, above, or one of these more DS-specific projects.

Hash tables are arguably the single most important data structure known to developers. Used to implement everything from objects in JavaScript and dictionaries in Python to Memcached over a distributed computer network, hash tables are beloved by programmers for providing key/value storage with constant big-O time complexity for insertion, deletion and search.

We will be looking underneath the hood at how this delightful data structure works and answering questions like, how do hash tables work? What is a hash function? What is a hash collision and how are they handled? What is the “birthday problem”? What do we do when our hash table is full?

You can think of hash tables as extensions of arrays. In class, we will implement arrays and compare them to linked lists. For your project, you will use this knowledge to implement hash tables in Python.

At first glance, this may seem like a silly task. After all, both of these data structures are already built into Python and their implementations are fast, full of features, and of course, already working.

The reason we are doing this isn’t so that when we’re done we will have an implementation of these data structures. We do it so that we can obtain a deeper understanding of how our predecessors have invented elegant solutions to difficult problems so that we are better equipped to to solve the problems we will encounter on the job.

A graph is a great general-purpose data structure that can be used to solve a wide variety of computing problems. It is the general case of the trees with which you are already familiar, where edges can connect one vertex to any other, not just downward. We will explore how to implement graphs, and several of the algorithms surrounding graphs to how they can be applied to solving real-world problems.

Note that the project for this topic is built over four days. See the README for the project details.

Until now, the computer itself has been something of a mysterious black box that miraculously executes our instructions for us. This sprint will explore how computers work at a very low level, giving you additional perspective that helps you approach the software development with more confidence.

CS Build Week 2: Technical Interview Prep

Goals

  • Practice solving arbitrary problems
  • Practice HackerRank-style whiteboard challenges
  • Practice interviewing
  • Learn interviewing techniques
  • Learn interview coding best-practices

Requirements/MVP

  • Participate in and attend guided demo daily
  • Work on afternoon programming challenges
  • Meet with your TL for 1:1s
  • Meet with your TL for behavioral interview prep
  • Complete the Unit Assessment
  • Things that are not required:
    • Solving the whiteboarding problems (but you must attempt)

Guided Projects

Each day we’ll cover whiteboarding practice, techniques, and tricks.

We’ll also have some additional material:

Monday: Whiteboarding and Technical Interviewing

Selected topics may include:

  • UPER: the key to thinking on your feet
  • How to describe a problem
  • How to describe a solution at a high level
  • How to talk about code you wrote
  • Copy code before submitting
  • Using UPER with whiteboarding
  • How to answer questions about optimization
  • Which data structure to use when?
  • Big-O, time and space complexity
  • How to comment code
  • How to format code
  • Make your code look sharp
  • How to code review/be code reviewed
  • How to react when the interviewer tells you a better way of doing things than you did
  • How to relax and work well under pressure
  • Having the right attitude while interviewing
  • How and when to be self-critical in an interview
  • How to practice interviewing with anyone
  • Self-assessing your interviewing strengths and weaknesses

Tuesday: How to Present your Work

  • Presentation by Kathleen Hunt

Wednesday: General Interviewing techniques

  • Presentation by Jordan Isbell

Thursday: What Companies Really Want to See

  • Presentation by Lindsay Gilson

Afternoon Projects

We will give you two whiteboarding problems.

You can choose which to work on first.

It’s not required to work on both. The second one is there in case you solve the first one.

TL 1:1s

During your 1:1 with your TL, they will ask you to describe the problem you worked on, as well as your strategy for solving it. Time permitting, they’ll also look at your code.

Hint: during this interview, pretend you’re the instructor and you’re teaching the TL about this problem and how to attack it.

Even if you haven’t solved the problem, tell them about the problem and your attempt so far.

TL-led Behavioral Interview Practice

In a group, TLs will ask people behavioral interview questions. (“Tell us about a time some problem happened and how you solved it” kind of questions.)

It’s OK to be nervous. Everyone else in the group is also nervous. But as you do this, the nerves will abate.

Even if you’re not the one being asked a question, think of how you’d answer it.


Lambda Labs

First of all, congratulations! You completed the primary instruction for your Lambda course! Take a moment to revel in your awesomeness, I’ll wait.

Alright that’s enough, now it’s time to take all that hard work and fresh knowledge and put it to good use.

Check out the guided projects, module inquiries, and sprint challenge for your first sprint in labs.

Check out the guided projects, module inquiries, and sprint challenge for your second sprint in labs.

Check out the guided projects, module inquiries, and sprint challenge for your third sprint in labs.

Check out the guided projects, module inquiries, and sprint challenge for your fourth sprint in labs.



Computer Science Annex

Heaps Module

In software development you’ll run into many different languages and ecosystems. Python is a popular language for general purpose computing, excelling in particular with data but with a huge community and packages for just about everything. Django is a “batteries-included” web application framework in Python, used by websites such as Instagram, Disqus, and Bitbucket.

In this sprint we will get set up with these tools, and then learn about two different approaches for designing web APIs. REST has been the dominant standard for a number of years. However, GraphQL has gained popularity recently due to its increased flexibility and efficiency.

In software development you’ll run into many different languages and ecosystems. Python is a popular language for general purpose computing, excelling in particular with data but with a huge community and packages for just about everything. Django is a “batteries-included” web application framework in Python, used by websites such as Instagram, Disqus, and Bitbucket.

In this sprint we will get set up with these tools, and then learn about object-oriented programming, which is an important paradigm for modeling and building real-world software. Lastly we’ll study software design patterns, which offer generalized solution techniques to common development problems.

The heart of many web applications is the API it exposes - in this week we will learn about two paradigms for API design (REST and GraphQL), and how the Model-view-controller design pattern builds on these to result in a full application.

A lot of the power of a web application framework is how it connects to an underlying database - this connection can be abstracted using an object-relational mapping, and Django has a powerful approach to this. We will learn how to use it, and also more about the (typically relational) databases that underlie it.

In this project week, you’ll be creating a simulation that visualizes the well known cellular automata, Conway’s Game of Life.

For those who are interested in exploring the C programming language, we have several topics below that can be completed independently to get more familiarity with lower-level programming constructs.