<p>I have to pick classes for next semester but I am not so sure if I should take another CS course or not. On the one hand I was going to double-major in it, but on the other hand the two courses I could take both have significant drawbacks. I apologize in advance that this is going to be a really long post.</p>
<p>I was lucky enough to take the two basic CS courses (intro and data structures) with a professor who does not teach. He is a really nice guy, he just seems to lack the motivation to come to class prepared to teach. To give you a first impression: he handed out an empty calendar as the syllabus…</p>
<p>(If you know anything about CS: After my Data Structures course, all I know about graphs is that they have nodes and edges; all I know about binary trees is that they have a breadth and a depth and that each element to the left/right of an element is smaller/larger than that element, and I can tell the difference between a balanced and an unbalanced tree; all I know about Big O-notation is that it relates to the speed of an algorithm relative to the amount of input data, but I have no idea how to compute it)</p>
<p>I talked to this professor and he pretty much told me the same thing he told me after the intro class (that the next class will be more structured, cover more material etc) but nothing changed after the intro class, so I am doubtful that the next class he teaches will be a lot different. I tried to talk to my Dean who did not believe me (“You are probably just bored because you already know everything that is taught in the class” - wrong!) and I talked to several CS majors who strongly recommended me to avoid this professor. </p>
<p>The problem: our CS department only has 3 professors, 1 of which is on leave for the current and the upcoming semester. To complicate matters, this professor is the department chair and I will be working with him this summer, so I don’t want to completely destroy my relationship with him.</p>
<p>Since I don’t know anyone else I could ask for advice at this point, I just have to make a choice. Because of some scheduling conflicts, I have the following three options for CS next semester:</p>
<li><p>Not take a CS course.
Pros: I wouldn’t have to worry about CS anymore.
Cons: I was going to double-major in CS and I wouldn’t quite know what classes to take instead. (My other major is math.)</p></li>
<li><p>Take another course with the same professor.
Pros: I know that I am “prepared” for the course and I know that it will be easy, and I would make progress towards the major (at least credit-wise)
Cons: I wouldn’t learn a lot… And three poorly-taught CS courses don’t make a good foundation for further studies.</p></li>
<li><p>Take Algorithms at Swarthmore through a cross-registration program.
Pros: I might actually learn something.
Cons: I don’t feel adequately prepared for this class at all. I just saw a sample midterm of Swarthmore’s Data Structures course and even though we supposedly covered all of the material, I am not able to answer a single question on their exam. I would not only have to self-study Data Structures over the summer but also learn Java, and that might be too much. In addition, the commute to Swarthmore is a royal pain in the ***.</p></li>
</ol>
<p>Any thoughts or suggestions?</p>
<p>P.S. It is not just me having these issues. Two of my friends came here to be CS majors and are now declared math majors because they are extremely disappointed by the rigor of the CS courses with this professor.</p>