Tuesday, December 10, 2024

What we learned in CS222, Fall 2024 edition

My students are currently typing away, writing their responses to the final exam questions for CS222. As per tradition, the first step was to set a 20-minute timer and ask them the list off anything they learned this semester that was related to the course. This was an enthusiastic group with hardly a quiet moment. They listed 130 items in 20 minutes. I gave them each six votes, and these were the top six:

  • TDD (9 votes)
  • SRP (8 votes)
  • Code cleanliness (6 votes)
  • DRY (6 votes)
  • Git (6 votes)
  • GitHub (6 votes)
Here are all the items they listed, together with the number of votes each earned, if any. There some interesting items here that point to interesting stories of personal growth. It was really a fun group of students to work with, even though several of them exhibited some behaviors I still cannot quite explain, such as a failure to take advantage of assignment resubmission opportunities.
  • Flutter (1)
  • Code cleanliness (6)
  • TDD (9)
  • A new sense of pain
  • How to set up Flutter (1)
  • DRY (6)
  • SRP (8)
  • Mob programming (2)
  • Pair programming (1)
  • Git (6)
  • Version control (2)
  • Future builder
  • Setting up your environment
  • Asynchronous programming (1)
  • UI design (3)
  • GitHub (6)
  • Code review (1)
  • Defensive programming
  • Working with APIs (1)
  • Model-View Layers (2)
  • Teamwork (4)
  • Better testing (1)
  • What "testing" is (2)
  • Explaining code with code instead of with comments (1)
  • Understandable and readable code
  • Agile development (1)
  • Naming conventions
  • Functional vs Nonfunctional Requirements
  • User stories (2)
  • Paper prototypinig
  • CRC Cards
  • User acceptance testing
  • Programming paradigms
  • How to write a post-mortem
  • Resume writing
  • Knowing when something is done (3)
  • Debugger (1)
  • Time management (3)
  • Using breakpoints
  • Test coverage (1)
  • Modularization
  • Distribution of work (1)
  • Communication skills (1)
  • Discord
  • Dart
  • commits on git
  • pull using git
  • Flutter doctor
  • pub get
  • Configuring the dart SDK
  • Rolling back commits
  • Checking out commits
  • Going to office hours early
  • Commit conventions
  • CLI tools
  • Don't use strings for everything
  • Structuring essays
  • Enumerated types
  • Sealed classes
  • Better note-taking
  • Humans are creatures of habit
  • Parse JSON data
  • JSON
  • Refactoring (5)
  • How often wikipedia pages change
  • Data tables
  • OOP (2)
  • URL vs URI
  • One wrong letter can lead to the program not working
  • How data are handled in memory
  • FIXME comments (1)
  • Widgets
  • State management
  • Encapsulation (1)
  • Abstraction (2)
  • Presenting projects
  • Coming up with project ideas
  • Reflection (2)
  • pubspec management
  • .env files
  • Hiding files from GitHub
  • Serializing JSON
  • Personal strengths & weaknesses
  • Falling behind sucks
  • Software craftsmanship
  • Work fewer jobs
  • Finding internships
  • Remember to email about accommodations
  • Accepting criticism on resubmissions (1)
  • Procedural programming
  • You don't have to take three finals on one day
  • Painting miniatures
  • GitHub has a comic book
  • Being flexible
  • Dead code
  • Holding each other to standards
  • Bad and good comments
  • Aliasing
  • Reading a textbook thoroughly
  • Rereading
  • No nested loops (no multiple levels of abstraction)
  • Using classes is not the same as OOP (1)
  • SMART
  • A bit about the Gestwicki family
  • Places to eat in NY
  • Getting ink to the front of an Expo marker
  • How to clean a whiteboard properly
  • New York Politics
  • Data structures vs DTOs vs Objects (1)
  • Conditions of satisfaction
  • Setting up ShowAlertDialog
  • Handiling network errors
  • Handling exceptions
  • Build context warnings
  • CORS errors
  • Semantic versioning
  • Dealing with Flutter error reporting
  • Test isolation (1)
  • Don't make multiple network calls when testing
  • Improving test speed
  • Always run all the tests
  • You can test a UI
  • Writing 'expect' statements
  • Running tests on commit
  • Autoformatting in Android Studio
  • Testing in clean environments
  • Creating dart files
  • Hard vs soft warnings
  • Functioning on 0-3 hours of sleep
  • Configuring git committer names

No comments:

Post a Comment