Lecture, four hours; discussion, two hours; outside study, six hours. Introduction to computer science via theory, applications, and programming. Basic data types, operators and control structures. Input/output. Procedural and data abstraction. Introduction to object-oriented software development. Functions, recursion. Arrays, strings, pointers. Abstract data types, object-oriented programming. Examples and exercises from computer science theory and applications. Letter grading.

Review Summary

Clarity
8.3 / 10
Organization
8.3 / 10
Time
5-10 hrs/week
Overall
8.3 / 10

Reviews

    Quarter Taken: Fall 2018 In-Person
    Grade: A

    Lectures were organized and easy to follow along, but can be a bit dull at times

    Quarter Taken: Fall 2019 In-Person
    Grade: A

    Excellent professor. Start early on the projects but otherwise an easy class.

    Quarter Taken: Fall 2019 In-Person
    Grade: A

    Smallberg is fantastic!

    Quarter Taken: Fall 2020 Online
    Grade: A

    Overall, CS 31 is a great introductory course that anyone with even a little programming background can start with. Smallberg’s lectures are filled with important information and he does a great job going over all the crucial details for understanding C++. Make sure to pay attention in this class, because it will help for developing general CS understanding in future courses.

    Quarter Taken: Fall 2020 Online
    Grade: A

    Flipped classroom made it flexible to keep up with the class at your own pace, projects were mostly balanced

    Quarter Taken: Fall 2020 Online
    Grade: A

    Professor Smallberg is an excellent lecturer and did a fantastic job running this course online. This quarter, he used a sort of "flipped classroom" approach. Before each lecture session, we listened to a lecture video I believe he recorded last spring on a particular CS 31 topic. During the actual lecture, Professor Smallberg took questions from students regarding the lecture video, helping to clarify any misconceptions and providing additional insights on the lecture material. I really prefer this method, as it's much easier to come up with questions this way. Grading scheme this quarter: 66 % projects (7 in total) 7% zyBook homework assignments 2% short "responsibility assignments" 5 % midterm 1 8 % midterm 2 12 % final The projects were a bit time consuming (especially Projects 3 and 5), but were not too difficult. Smallberg's project specs are extremely clear and left me with no lingering questions. I actually spent a lot more time testing my programs and coming up with test cases than the actual coding. Make sure to spend quality time testing your program, especially with the random edge cases (ex: negative or zero array size). This quarter's project averages were extremely high (many of them had a median score of above 95). The exams this quarter were all open-compiler and consisted mainly of writing code. The midterms were very easy, and the final was a bit harder but not overly difficult. Professor Smallberg takes some time to grade exams (I still haven't received my midterm 2 and final scores yet). Hopefully they will come out soon. Note that the grade I entered for this review is the grade I predict I will get, as final grades haven't come out yet. Overall, Smallberg's teaching is super clear and thorough and he makes this class very well organized. Definitely would recommend.

    Quarter Taken: Fall 2020 Online
    Grade: A

    Smallberg is cool. After this class, I knew the basics of programming. So, the class was successful. Token pls.

    Quarter Taken: Fall 2016 In-Person
    Grade: A

    Smallberg has been teaching CS 31 for over a decade and is an absolute legend. The class is extremely well organized. Smallberg goes into great detail to make sure everyone understands everything he teaches. If you have previous CS experience, you might find this slow but I've also heard it's very helpful. Homeworks and tests are very fair if you've been paying attention in lecture. Make sure your cheat sheet has code examples on it, because you have to write C++ on paper. Overall, would definitely recommend if you're interested in computer science!

    Quarter Taken: Fall 2021 Hybrid
    Grade: A

    Very good intro class to CS. Teaches you the basics and certainly one of the easier CS classes to get you familiar with the foundational knowledge you will need for latter classes

    Quarter Taken: Fall 2021 Hybrid
    Grade: B+

    Start your projects early and go to UPE or TA tutoring for help.

Course

Instructor
David A. Smallberg
Previously taught
24F 24S 23F 23S 22F 22S 21F 21S 20F 20S 19F 19S 18F 18S 17F 17S 16F 16S 15F 15S 14F 14S 13F 13S 12F 12S 11F 11S 10F 10S 09F 09S 08F 08S 07F 06F 05F 04F 03F 02F 01F

Grading Information

  • No group projects

  • Attendance not required

  • 2 midterms

  • Finals week final

  • 47% recommend the textbook