Thursday, December 7, 2023

What we learned in CS222, Fall 2023 edition

Once again, I gave my CS222 students the challenge to make a list of everything they learned this semester. This semester's group came up with 155 items, and then each individual voted on their top seven—the seven that they thought were the most important. Our top items this semester are as follows:

  • Clean Code (8 votes)
  • GitHub (7 votes)
  • TDD (5 votes)
  • Time Management (4 votes)
  • OOP (4 votes)
If we had kept stepping down the line, the next cluster was at three votes, and only two items had these: Software Craftsmanship and Resubmissions. This is interesting to me, since I don't remember "resubmissions" being such a focus in past semesters on this list. However, a lot of students did a lot of resubmissions this semester. I don't fully understand why they would put this on the list and vote for it, but I am hopeful that it is because they have recognized the utility in thinking about learning this way: that it's not a case that you learn something or not and then move on, but that if it's worth learning, it will probably take some time to get it right.

This really was a fun group of students in CS222 this semester. I feel like we had a good rapport, with many of the students catching on to the method behind the class. I think this manifests well in one of the items on the list today: a student said that they learned how to follow detailed system configuration instructions early in the semester, when configuring their Flutter development environment. I usually try not to interject while students are brainstorming their list of things they learned, but I did take the opportunity here to point out that this was on purpose, that part of the course design was to help them understand how to do this so that they would be better at it next time.

I expect to write a more thorough retrospective on the semester next week, as I usually do. In the meantime, here is the full list that the students came up with, sorted by votes.

Clean Code8
GitHub7
TDD5
Time Management4
OOP4
Software Craftsmanship3
Resubmissions3
SRP2
Acceptance Testing2
Naming conventions2
Debugging2
Good names2
Shu ha ri2
Unit tests2
Incremental Development2
Teamwork2
Flutter1
DRY1
Tokens1
Beck-Style Task List1
SMART1
Abstraction1
Encapsulation1
Research1
APIs1
Getters and Setters are Evil1
Comments are evil1
Code should explain itself1
Android Studio1
Exploratory coding1
Experimental code1
Conditions of Satisfaction1
Ctrl-Q1
Keyboard shortcuts1
Refactoring1
Efficient programming1
Gamedev jobs/internships1
Internships1
Overcoming procrastination1
Commit messages
Red-Green-Refactor
UI
Mob Programming
User Experience
CRC Cards
FIRST
User Stories
Law of Demeter
Aliasing
MVC
Listeners
Stepdown Rule
Branching
Feature branching
Defensive Programming
Game Jams
Code Coverage
Resume
Psycho/sociopaths on teams
Dart conventions
Linked In
Communication
English
Scheduling
Priority lists
JSON decoding
JSON
API Keys
Configuration files
Secure key management
Serialization
Authorization
Directoiry management
Semantic Versioning
Alan Kay
RCM
Holub
Kent Beck
Dijkstra
The Null Guy
Widgets
Null Safety
Semantics
Bureaucracy
Tim Cain videos
Coding ethics
Intellectual property
Triangulation
Testing
Good use of types
Enumerated types
Dart
Error handling
Separation of concerns
Sorting
Monads/Arity
Kanban boards
Code review
Network clients
Integration tests
Learning tests
Being programmed
Data structures
Obvious implementation
Fake it
Avoid "cute" names
Dependencies
pubspec.yaml
Imports
Cornell Notes
README
Beams' commit format
Mike Cohn
Using the terminal
"Problems" tab
Shift-F6
Alt-Enter
Mind maps
Flutter Cookbook
Syntax
Exceptions
Format on save
Android SDK
Following configuration instructions
Macbooks are evil
Windows Developer Mode
Visual Studio
Stack Overflow
git usernames
git commands
pull requests
Google Drive
Google Docs
Achievements
PowerPoint
Preparation
Presentation
Alternative grading systems
Reflection essays
Leap years
Foo/foobar
FizzBuzz
GradeTool
Printing in production code is bad
Cannot build across async gaps
Demonstrating understanding in assignments
Patience
Trust the process
Wikipedia
Soup
Self responsibility
Career is not a zero-sum game (win-win situations)
EMRF
Arxiv
Developer jobs

No comments:

Post a Comment