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 implement and test data structures including lists, stacks, queues, sets, maps, and trees. Students will then apply these to real-world problems like phone call routing to understand their tradeoffs. Students will also write technical blog articles about these topics to deepen understanding, improve technical writing, and bolster their 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!
- Gradescope Assignment Submission Page
- All Slides
- All Rubrics
- All Videos
- Starter Code
- Office Hours Sign Up Sheet
- Makeschool Stackoverflow
Course Dates: Monday, March 30 – Wednesday, May 13, 2020 (7 weeks)
Class Times: Monday and Wednesday at 2:30–5:20pm(Section A) or Tuesday & Thursday at some time (Section B)
Class | Date by Section | Review of Prior Topic | New Topic & Challenges | Quiz or Deliverable Due |
---|---|---|---|---|
1 | A: Mon, March 30 B: Tue, March 31 |
N/A | Number Bases | N/A |
2 | A: Wed, April 1 B: Thu, April 2 |
Number Bases Review | Recursion & Search Algorithms | N/A |
3 | A: Mon, April 6 B: Tue, April 7 |
Search Algorithms Review | Recursion & Search Algorithms II | N/A |
4 | A: Wed, April 8 B: Thu, April 9 |
N/A | String Algorithms | Due: Number Bases & Search Algorithms |
5 | A: Mon, April 13 B: Tue, April 14 |
String Algorithms Review | Arrays & Linked Lists | Quiz: 1 |
6 | A: Wed, April 15 B: Thu, April 16 |
Linked Lists Review | Technical Article Kickoff & Lists, Stacks & Queues | Due: Palindromes & String Algorithms |
7 | A: Mon, April 20 B: Tue, April 21 |
Technical Article Peer Review & Stacks & Queues Review | Maps & Hash Tables | Quiz: 2 |
8 | A: Wed, April 22 B: Thu, April 23 |
Hash Tables Review | Trees & Binary Search Trees | Due: Lists, Stacks & Queues |
9 | A: Mon, April 27 B: Tue, April 28 |
Binary Search Trees Review | Tree Traversals | N/A |
10 | A: Wed, April 29 B: Thu, April 30 |
Tree Traversals Review | Lab Day | Due: Hash Tables & Article Draft |
11 | A: Mon, May 4 B: Tue, May 5 |
N/A | Sets | Due: Trees & Tree Traversals |
12 | A: Wed, May 6 B: Thu, May 7 |
Sets Review | Word Jumble Project | Quiz: 3 |
13 | A: Mon, May 11 B: Tue, May 12 |
Lab Day | N/A | Due: Sets & Set Operations |
14 | A: Wed, May 13 B: Thu, May 14 |
Lab Day | N/A | Due: Article & Word Jumble Project |
Students must pass the following course and demonstrate mastery of its competencies:
By the end of this course, students will be able to:
- Implement, compare and contrast iterative and recursive algorithms
- Analyze best-case and worst-case time and space complexity of an algorithm
- Implement several abstract data types and data structures including linked lists, stacks, queues, hash tables, maps, sets, and binary search trees
- Implement tree traversal algorithms: depth-first and breadth-first ordering
- Write technical articles to deepen understanding and demonstrate mastery
Each lesson has an associated set of coding challenges with starter code and unit tests provided. Full details can be found in the "Challenges" section of each lesson linked in the schedule above. You will submit each coding challenge on Gradescope in its own repo.
Students will also write a technical article about a topic related to course content to deepen their understanding, improve their technical writing skills, and demonstrate mastery of computer science, which will bolster their online presence as knowledgeable and proficient software engineers. Refer to the technical article guidelines for more information about article requirements and detailed tips on how to select a topic related to computer science, research the topic, create an outline, write your article, cite all sources of borrowed material, and provide feedback to other students.
Completion of coding challenges will be assessed according to the associated coding challenge rubrics.
To pass each submission, students must earn the required number of points or higher indicated on the associated rubric. Note that all points within one submission are fungible (that is, interchangeable) and so if one portion of work is below the "Met All Expectations" column of the rubric, another portion of work submitted can "Exceed Expectations" (generally by completing stretch challenges) to earn an extra point to make up for the missing one. Therefore, it's wise to complete stretch challenges as "insurance" in case some work does not meet expectations.
Another way to think of the submissions is a game where your goal is to earn enough points to pass in whatever way you see fit, with rubrics as the rules of the game that you can optimize against and "win" to pass the course.
The instructor or teaching assistants will review students' submissions, then share feedback with the student through Gradescope. Feedback will include their status on that submission (that is, whether their work is passing the rubric or the student needs to improve and resubmit their work to pass).
Submissions received after the due date will not be considered unless the instructor has approved an extension.
To pass this course, students must meet the following requirements:
- Complete the required coding challenges (you must attempt all coding challenges but can drop one that isn't the final word jumble project)
- Pass the coding challenges according to the associated coding challenge rubrics
- Complete all coding challenges by the due dates above
- Complete all lab deliverables by the end of class
- Pass all quizzes
- Actively participate in class and abide by the attendance policy
- Make up all classwork from all absences
There will be a total of 3 quizzes. If you do not pass a quiz the first time you will be given some small assignments and a recommendation on what to study. You will be given a week to complete these and after you have completed them you can retake the quiz questions you missed to get your overall score up to passing for that quiz.
- Program Learning Outcomes - What you will achieve after finishing Make School, all courses are designed around these outcomes.
- Grading System - How grading is done at Make School
- Diversity and Inclusion Statement - Learn about Diversity and Inclusion at Make School
- Academic Honesty - Our policies around plagerism, cheating, and other forms of academic misconduct
- Attendance Policy - What we expect from you in terms of attendance for all classes at Make School
- Course Credit Policy - Our policy for how you obtain credit for your courses
- Disability Services (Academic Accommodations) - Services and accommodations we provide for students
- Student Handbook - Guidelines, policies, and resources for all Make School students