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!
Students by the end of the course will be able to ...
- Compare and contrast iterative and recursive algorithms
- Analyze the complexity of an algorithm to determine its runtime
- Implement various data structures such as stacks, queues, sets, maps, and trees
- Implement iterative and recursive sorting algorithms
- Build out different types of tree traversals
- Practice writing technical articles
Course Dates: Wednesday, May 29 – Wednesday, July 3, 2019 (6 weeks)
Class Times: Monday & Wednesday at 3:30–5:20pm (11 class sessions)
Class | Date | Review of Prior Topic | New Topic & Challenges |
---|---|---|---|
1 | Wed, May 29 | – | Number Bases |
2 | Mon, June 3 | Number Bases Review | Recursion & Search Algorithms |
3 | Wed, June 5 | Search Algorithms Review | String Algorithms |
4 | Mon, June 10 | String Algorithms Review | Arrays & Linked Lists |
5 | Wed, June 12 | Linked Lists Review | Lists, Stacks & Queues |
6 | Mon, June 17 | Stacks & Queues Review | Maps & Hash Tables |
7 | Wed, June 19 | Maps & Hash Tables Review | Trees & Binary Search Trees |
8 | Mon, June 24 | Binary Search Trees Review | Tree Traversals |
9 | Wed, June 26 | Tree Traversals Review | Sets & Circular Buffers |
10 | Mon, July 1 | Sets Review | Technical Article Peer Review |
11 | Wed, July 3 | – | Word Jumble Challenge |
Please follow these instructions exactly to set up your fork of this repository.
To pass this course you must meet the following requirements:
- Complete all required tutorials
- Pass all projects according to the associated project rubric
- Pass the final summative assessment >=75%
- Actively participate in class and abide by the attendance policy
- Make up all classwork from all absences