Instructor: Ran Raz
Description of Course Goals and CurriculumThis course covers basic topics in math related to computer science, which includes subtopics such as: mathematical proofs, combinatorics, probability theory, graph theory, and theoretical computer science. There is a midterm and exam for this course, as well as semi-regular assignments. It is intended for students with varying levels of experience in formal and mathematical proofs, and the ultimate goal of this course is to create a foundation for mathematical thinking, through a computational perspective.
Learning From Classroom InstructionThe class is broken down into two lectures and one precept every week; majority of the course concepts are covered in lecture and the precepts go over 2-3 difficult problems that reinforce the topics from that week’s lectures. The lectures themselves are a mix of explaining and proving theory and then applying those theories to relatively simple problems. While the lectures and precepts provide the necessary and essential base to understanding all the topics for assignments and exams, there is a weekly chapter reading and a precept handout of notes provided for each week. It is helpful to read the assigned chapters before lecture so that the material is familiar during the lecture and scanning through the precept notes right before precept can help in identifying any confusing subtopics, which the preceptor can then focus more time on. In particular, the textbook readings and the precept handout help in formalizing the definitions and formulas covered in class, which can prove to be useful for assignments.
Learning For and From AssignmentsThis is a proof-based class, and as a result, a lot of the material that is learned is through exposure to different proofs. It is important not to gloss over the examples given in lecture and precept as the assignments and exams ultimately test the student’s ability to not just know different theories, but also understand when they are needed and how to apply them. Studying for exams in this course is a cumulative process – it is through practice that familiarity and understanding of the theories is achieved. The course format emphasizes this, and the structure and format of exams in this course is very similar to the assignments themselves. Therefore, taking the time to attend office/lab TA hours, reading the textbook, and then the assignment solutions after they are released, greatly lessens the stress for midterm/final revision and allows time for studying the more complicated theories. In Fall 2020, there were five problem sets assigned, usually six questions in each problem set. Logical thinking is the cardinal skill required in this course and the professor slowly introduces this into lecture and assignments; the course progressively demands a higher level of analytical thinking as the foundations of mathematical proofs, probability, and graph theory are taught. The problem sets are designed to initially stump you, however, learning to break down the question and logically build up your proof is the most important take-away skill in this course.
External ResourcesThere are three main sources of academic support: first is the faculty (i.e. the instructor and the preceptor), second are the lab TAs, and third are your classmates. Office/lab TA hours are carefully scheduled to provide regular support (typically a few hours every day) throughout the semester and provide students the opportunity to discuss clarifications about the assignments, or feedback on their proof strategies. The office/lab TA hours help in nudging your thinking process and suggest strategies to proof-writing that can be useful for future problem solving. A large portion of this course requires visualization of the problem scenario, and the preceptors and lab TAs can guide you through the problem set up. It is useful to integrate going to office/lab TA within your regular schedule as it encourages starting on the assignments early. Generally, assignments are posted 1-2 weeks before the deadline. Lastly, discussion with classmates is a good way to analyze what concepts in the proof is confusing; after trying out the assignment by yourself and then discussing with a peer, you can form your questions in office/lab TA hours to focus on the necessary confusing subtopics.
What Students Should Know About This Course For Purposes Of Course SelectionThis course does require many hours of study outside of class in terms of working on proofs and typing them up formally in LaTex (which is the submission format). It is easy to fall behind in this course as problem sets are not weekly (but spread out), and therefore time management is a key element to succeeding in this course. This course is mainly designed for COS majors and does cater some lectures to how to logically design an algorithm, however there is no actual programming in this course, and so students from all majors are welcome. This is inherently a math-based class.
Reasoning About Computation