Explored C++, object-oriented programming, recursion, analysis of algorithms, and data structures such as: vectors, queues, stacks, lists, trees and graphs.
- Correctly use recursion to solve a problem with a binary search tree or graph
- Determine the Big-O speed of an algorithm.
- Correctly implement the right data structure for a given problem
- Correctly determine the relative runtimes of different algorithms
- Analyze unstructured problems and design computer solutions
- Apply or a create suitable algorithm to solve a particular problem.
An ability to:
- Apply knowledge of computing and mathematics appropriate to the discipline
- Analyze a problem and identify the computing requirements appropriate for its solution
- Design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs, and use current techniques, skill, and tools necessary for computing practice.
- Apply mathematical foundations, algorithmic principles, and computer science theory to the modeling and design of computer based systems
• C++: Began with a crash course in C++ programming, including keyboard and terminal I/O, file I/O, loops, logic constructs (if/then/else), and steadily build up our C++ knowledge as the semester progresses.
• Object-Oriented Programming (OOP): Beginning with the basic concepts of OOP, we will explore the building blocks of the OOP paradigm - classes, templates, modular code, etc.
• Recursion / Algorithmic Complexity: Part of writing good programs is knowing how good they are and where their weaknesses lie. We will explore the mathematical tools available to calculate how algorithms scale with the complexity of their input.
• Data Structures: This is what the majority of the class focuses on, using the skills we learn in the first half to develop useful data structures for organizing and representing data to solve real problems.