Plan ahead for courses where students have earned lower grades.
Lowest historical GPA first. At least 100 letter grades over the five years through the
selected term. Grades reflect past outcomes, not workload or a guaranteed result.
Find your fit
52 courses
Ranked courses have at least 100 recorded letter grades.
One student found the lectures had almost no correlation to the homework, creating the feeling of taking two separate classes and requiring significant extra effort to connect the material.
Linear Optimization covers problems with linear inequality constraints, emphasizing formal proofs, the simplex method's theory, duality, and theorems of the alternatives.
Homeworks were extremely hard at times, though the total volume was limited to eight assignments. The workload is demanding due to the difficulty of the problems rather than the quantity.
Covers direct and iterative solutions for linear/nonlinear systems and eigenproblems, including LU/QR factorizations, least squares, and algorithmic stability.
One past student said Amos Ron’s homeworks were 10–15 pages biweekly. Another said the homework took many hours and lectures met three days a week for 75 minutes.
Machine Organization and Programming introduces computer system structures and C programming, focusing on low-level performance impacts like virtual memory, caching, and assembly.
Introduction to the theory and practice of compiler design, comparing programming language features and their implementation implications through required programming projects.
Introduction to cryptography covering secure transmission of digital information, distinguishing perfect from computational security, and introducing technical aspects.
Introduction to combinatorics covering enumeration, inclusion-exclusion, generating functions, graph coloring, finite designs, and matching problems with applications in science and puzzles.
The grading system was unique and demanding: students needed full marks on all assignments and tests or extra credit to achieve an A; otherwise, the highest possible grade was an AB.
One student found the homework tedious but manageable, while another noted a heavy workload that was doable with time. Rycroft's exams were challenging but included partial credit, whereas Ohm's exams were described as having very reasonable difficulty.
Introduction to Optimization covers mathematical optimization from a modeling and solution perspective, focusing on formulating discrete and continuous optimization problems and equilibrium models.
Past student reviews · Michael Ferris, Laurent Lessard
Homework assignments were difficult and time-consuming, with one student noting they would ruin their social life, while another found them helpful for learning.
Programming III is the third course in the programming fundamentals sequence, covering data structures, algorithms, and complexity analysis with an emphasis on professional code quality.
Project workloads varied significantly, ranging from one to over twenty hours per week depending on group dynamics. Exams were generally not considered super difficult, though some students noted that tests covered obscure topics mentioned only briefly in lecture.
Homework assignments were challenging and time-consuming, requiring significant effort. Students found the class became much easier when they actively collaborated with their group and attended discussion sessions.
Programming II covers Object-Oriented Programming, introducing array-based and linked data structures like lists, stacks, and queues to solve complex problems.
Students reported a large amount of busy work, some of which was challenging and time-consuming. Exams were inconsistent in difficulty, with multiple-choice and programming components varying in ease.
Introduction to Artificial Neural Networks covering theory and applications including MLPs, CNNs, RNNs, SVMs, and genetic algorithms for control, pattern recognition, and object detection.
The course had a huge workload with many homeworks, exercises, and a group project. The first half was very difficult without a strong background in Linear Algebra or Calc 3.
Introduction to Data Science programming using Python with no prior experience required, emphasizing analysis of real datasets and visual communication.
Projects were extremely time-consuming and often repetitive, but students appreciated that the grade was largely based on their completion rather than just exams.
Students noted that homework was the primary basis for learning and was very similar to exams. Some found the homework difficult even with lectures, requiring significant independent work outside of class.
Covers DBMS design and implementation, including data models, file organization, query processing, concurrency control, recovery, and hands-on experience with relational and network-based systems.
Introduction to Big Data Systems covers deploying distributed systems for storing and analyzing large datasets using unstructured and structured storage, query languages, streaming data, and machine learning in Python.
The workload is demanding, with students reporting that 30 hours a week is not unusual to do well. Individual projects can require a minimum of 30 to 50 hours to complete, making the material and assignments time-intensive.
Matrix Methods in Machine Learning covers linear algebraic foundations including SVD, regression, and regularization applied to classification, clustering, and neural networks.
Programming I introduces fundamental CS concepts through incremental development of small programs. It covers problem abstraction, flow control, functions, and I/O, targeting students with no prior programming experience.
Homework was due Monday through Thursday, often involving participation tasks that took significant time. Students also faced weekly Friday quizzes, with midterms scheduled on Sundays.
Introduction to software development of user interfaces, covering UI paradigms, diverse user input handling, and platform-specific APIs for web, mobile, desktop, and voice interfaces.
Introduction to Artificial Intelligence covering search, deduction, knowledge representation, machine learning, and probabilistic reasoning with applications in NLP, vision, and robotics.
Exams were reported as extremely difficult, with one student stating they were impossible to prepare for using class materials alone. Another described the exams as 'sadistic' but noted the instructor was helpful when students reached out.
The course typically includes four moderate quizzes and four straightforward programs, though one student warned that the final program was particularly challenging.
The course was described as extremely hard, particularly for undergraduates, with one student noting it made their brain hurt. TAs and the professor went the extra mile to break down difficult concepts.
Introduction to Software Security covers secure design, secure programming, vulnerability assessment, static/dynamic analysis tools, and system defenses across the SDLC.
The class required weekly quizzes, a participation event, and extra credit opportunities. One student noted that while the course was less challenging than core CS classes, missing quizzes made getting an A difficult.
Introduction to Web Development covers secure/interactive web content, programming fundamentals, CMSs, accessibility, design, ethics, and website implementation using scripting languages and frameworks.
Introduction to high-performance computing focusing on shared-memory systems, multithreaded programming, vectorization, and memory hierarchy using numerical algorithms as case studies.
Lectures primarily involved case study go-throughs with code. Practice exams were provided for review, supporting the course's lenient grading structure.