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 Code | 8 |
GitHub | 7 |
TDD | 5 |
Time Management | 4 |
OOP | 4 |
Software Craftsmanship | 3 |
Resubmissions | 3 |
SRP | 2 |
Acceptance Testing | 2 |
Naming conventions | 2 |
Debugging | 2 |
Good names | 2 |
Shu ha ri | 2 |
Unit tests | 2 |
Incremental Development | 2 |
Teamwork | 2 |
Flutter | 1 |
DRY | 1 |
Tokens | 1 |
Beck-Style Task List | 1 |
SMART | 1 |
Abstraction | 1 |
Encapsulation | 1 |
Research | 1 |
APIs | 1 |
Getters and Setters are Evil | 1 |
Comments are evil | 1 |
Code should explain itself | 1 |
Android Studio | 1 |
Exploratory coding | 1 |
Experimental code | 1 |
Conditions of Satisfaction | 1 |
Ctrl-Q | 1 |
Keyboard shortcuts | 1 |
Refactoring | 1 |
Efficient programming | 1 |
Gamedev jobs/internships | 1 |
Internships | 1 |
Overcoming procrastination | 1 |
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