Course: COS 226
Instructor: Kevin Wayne
Description of Course Goals and CurriculumThis course focuses on algorithms and data structures which are in use by programmers and computers in modern day. The course progresses through algorithms in sorting, searching, string processing, as well as data structures such as arrays, binary search trees, red – black search trees, binary heaps, and tries among others. The course focuses on developing efficient implementations to real-world problems and understanding the effectiveness of programs in different situations via both run-time and memory analysis.
Learning From Classroom InstructionAttendance at lecture/precept makes up a small portion of the semester grade (~5%) however in this course in particular, lectures and precepts are immensely valuable. Over the two weekly lectures, the instructor will provide most of the concepts and new material for the week, which will be the basis for the assignments. The main purpose of lectures is to get familiar with the material and be exposed to it for the first time. Moreover, the slides which are used provide quite a bit of detail and clarity via images and graphics making them great for studying from later for the midterm and final. Precept serves the purpose of reviewing a few concepts that might not have been covered in lecture (or not in as much detail). In addition to this, the main purpose of precept is to review the details pertinent to the programming assignment of the week. The preceptors will go over some tips, tricks, and general means of approaching the assignments which are very helpful as they provide a clear direction to head in before beginning.
Learning For and From AssignmentsProgramming assignments are the best means of understanding the data structures and algorithms from the week. There are two different types of assignments students are asked to complete. One style of programming assignments entails creating your own datatype or implementation of an algorithm. The other style of programming pertains to using a data structure or algorithm from the week in some sort of an application. The first type of assignment provides a way to learn how to think like a programmer - thought is required in answering questions pertaining to run-time, efficiency, clarity, and overall correctness of the solution. The second type of assignment is important in learning how to use the data structures and algorithms efficiently.
External ResourcesCOS 226, similar to COS 126 has a lot of resources of external help:
- Office hours: Attending office hours is great for asking conceptual questions from lecture, clarifying course material, understanding practice exam questions, and getting help in how to start an assignment.
- Lab TAs: Lab Teaching Assistants provide aid in debugging on any of the assignments from the semester. If you are stuck on a particular issue or have a bug that you cannot resolve, they will prove immensely helpful.
- Piazza: An online question platform, Piazza is best used for asking general questions from the assignments, clarification from lecture material, or exam questions. The questions should be shorter and simpler than those you might ask in office hours.
What Students Should Know About This Course For Purposes Of Course SelectionThis is a great course for any student, regardless of whether you are a COS major or not. The material in this course is certainly challenging conceptually, especially the second half of the semester, however the work load every week is not overwhelming. The minimum requirements every week are to complete 2 three question quizzes (based on lecture material), one programming assignment, and attend precept/lecture. You will get out what you put into this course, especially since reading the textbook is not vital for exams or assignments, but provides a lot of extra knowledge which you would not receive in lecture. The weekly quizzes and assignments do require you to stay on top of the material. This course should not be taken as a fifth course, and in general one should avoid pairing it with COS 217 if possible.
Algorithms and Data Structures