This course explores the foundations of computer science including discrete mathematics, abstract data types, data structures, and algorithm analysis and design. Students will compare and contrast iterative and recursive algorithms to analyze design and performance tradeoffs. Students will apply and test data structures like lists, stacks, queues, sets, maps, and trees in real-world problems such as phone call routing. Students will also write technical blog articles about these topics in order to deepen their understanding and gain valuable online presence as knowledgeable and proficient software engineers.
Data structures are the building blocks of computer science. It's the foundation that allows engineers to store and manipulate data. Once you have a place to store the data, if you need to find data or sort it in a specific way, you'll need search algorithms in order to do that.
Implementations of these concepts are how some of the largest tech companies in the world were built. Displaying relevant search results and finding friends and peers on social networks would be impossible without these core concepts. They're also the most common topics for software engineering interviews, and leveling up your knowledge on these topics is required to nail that technical interview!
Weeks to Completion: 7
Total Seat Hours: 37.5 hours
Total Out-of-Class Hours: 75 hours
Total Hours: 112.5 hours
Units: 3 units
Delivery Method: Residential
Class Sessions: 14 classes, 7 labs
Students by the end of the course will be able to ...
NOTE: Update once schedule is in place
Course Dates: Monday, April 1 – Wednesday, May 15, 2019 (7 weeks)
Class Times: Monday and Wednesday at 1:30-3:20pm and 3:30–5:20pm (14 class sessions)
Class | Date | Topics |
---|---|---|
1 | Monday, April 1 | Number Bases |
2 | Wednesday, April 3 | Recursion & Search Algorithms |
3 | Monday, April 8 | String Algorithms |
4 | Wednesday, April 10 | Arrays & Linked Lists |
5 | Monday, April 15 | Lists, Stacks & Queues |
6 | Wednesday, April 17 | Maps & Hash Tables |
7 | Monday, April 22 | Sets & Circular Buffers |
8 | Wednesday, April 24 | Sets Continued + Technical Article Peer Review |
9 | Monday, April 29 | Trees & Binary Search Trees |
10 | Wednesday, May 1 | Tree Traversals |
11 | Monday, May 6 | Call Routing Project |
12 | Wednesday, May 8 | Call Routing Project Code Review |
13 | Monday, May 13 | Call Routing Project Presentations |
14 | Wednesday, May 15 | Final Exam |
Please follow these instructions exactly to set up your fork of this repository.
All projects will require a minimum of 10 commits, and must take place throughout the entirety of the course
We want to encourage best practices that you will see working as a professional software engineer. Breaking up a project by doing a large amount of commits helps engineers in the following ways:
Through this requirement, we hope to encourage you to think about projects with an iterative, modular mindset. Doing so will allow you to break projects down into smaller milestones that come together to make your fully-realized solution.
To pass this course you must meet the following requirements:
Just like any job, attendance at Make School is required and a key component of your success. Attendance is being onsite from 9:30 to 5:30 each day, attending all scheduled sessions including classes, huddles, coaching and school meetings, and working in the study labs when not in a scheduled session. Working onsite allows you to learn with your peers, have access to support from TAs, instructors and others, and is vital to your learning.
Attendance requirements for scheduled sessions are:
Failure to meet these requirements will result in a PIP (Participation Improvement Plan). Failure to improve after the PIP is cause for not being allowed to continue at Make School.
Academic Honesty
Accommodations for Students
Attendance Policy
Diversity and Inclusion Policy
Grading System
Title IX Policy
Program Learning Outcomes