COMP SCI 300
Programming II
University of Wisconsin - Madison
University of Wisconsin - Madison
Introduction to Object-Oriented Programming using classes and objects to solve more complex problems. Introduces array-based and linked data structures: including lists, stacks, and queues. Programming assignments require writing and developing multi-class (file) programs using interfaces, generics, and exception handling to solve challenging real world problems. Topics reviewed include reading/writing data and objects from/to files and exception handling, and command line arguments. Topics introduced: object-oriented design; class vs. object; create and define interfaces and iterators; searching and sorting; abstract data types (List, Stack, Queue, PriorityQueue (Heap), Binary Search Tree); generic interfaces (parametric polymorphism); how to design and write test methods and classes; array based vs. linked node implementations; introduction to complexity analysis; recursion.
There are programming assignments every week. When I took this class in the Fall, the assignments were released on Wednesday after noon. They were due one week later. The assignments had a specific focus - ArrayList, LinkedLists, Stacks, Queues, BST. The projects were really fun because some of them had GUI and others were an interesting application of the data structure. The actual implementation of the program was more complicated and relied heavily on Professor Mouna's lecture notes and code examples. In some of the programming assignments, you are allowed a partner to program with. However, it is not required.
When I took the class, the exams were about half of our final grade - 45% total. There were three exams total weighing 10%, 15%, and 20% respectively. Professor Mouna did a great exam review lecture the day/lecture before the exam. She reviewed what the exam would cover on the last day of class. She also reviewed the exam questions that were most commonly wrong in great detail after each exam. Regarding the exams, they are not too difficult and have about 35 multi-choice questions and three free-choice questions. Overall, the exams are not too difficult, and the topics are well-covered in Zybooks, Professor Mouna's notes, and lectures.
As expected, CS300 was much harder than CS 200. The projects are more involved. While some may only require one hour of work, others will require up to 20 hours (gathered from personal experience and peers' experience). The focus of this class is primarily utilizing data structures and understanding Object-oriented programming. Here, class and program design are discussed in detail. Inheritance is one of the biggest focuses in this class. Additionally, interfaces, abstract classes, debugging and testing are introduced and utilized throughout the course. This is a great class to take if you have taken CS 200 or are confident with your skills with Java.