I'm a Berkeley prof. Working at a startup led me to update my 1500-person class
1–10 of 15 posts
Re: I'm a Berkeley prof. Working at a startup led me to update my 1500-person class
#2Some specific open questions I have:
1. How can I nudge students towards being creative with their comparators so that we get more variety?
2. Is there a natural extension that would get students working on the same files, yielding a richer demonstration of CI?
3. Could we allow students to somehow edit the contest code itself without breaking the entire idea of the project?
Re: I'm a Berkeley prof. Working at a startup led me to update my 1500-person class
#3Re: I'm a Berkeley prof. Working at a startup led me to update my 1500-person class
#4Even if we aced every test, all our assignments needed to work 100% in order to pass the class. The assignments were then graded on style. The professors were all current or former professionals - our code had to pass their test suite.
Re: I'm a Berkeley prof. Working at a startup led me to update my 1500-person class
#5This is a weird assignment idea. I’d love to hear what you think, how you might improve it, etc. Some specific open questions I have: 1. How can I nudge students towards being creative with their comparators so that we get more variety? 2. Is there a natural extension that would get students working on the same files, yielding a richer demonstration of CI? 3. Could we allow students to somehow edit the contest code i…
1. What is it teaching? Comparator is trivial to implement, and you're adding no requirements on it (except maybe having a human readable shortname). Code reviewing a Comparator which merely has to compile and match the two simple rules of Comparators is not a useful code review. CI tests to check those rules for common errors is quite easy (undermining the value of code review) but there's not much extra complexity to shove into the Github actions to show their power. Maybe students will be amazed by a live scoreboard, but I don't expect that anymore. We had live scoreboards for (secretly submitted) assignments back in the 00s, and the world has become significantly faster-updating since then.
2. Incentivizing unique comparators adds in a lot of meta-work. Students will need to monitor the repository and the submissions of other students if the incentive is too high. Some students may wait until the last second to submit their solutions to avoid being detected, and yet other students may try to play spoiler and copy other submissions.
3. I don't like the structure where students submit two things (a number and a comparator) where the outcomes of the lottery are almost entirely based on the number. The comparator, which seems to be the intent of the lesson, isn't tied to the success of a particular student. And since you're only re-rolling comparators in the case of a 0 output for an input pair, there's a pretty significant chance that some student submissions won't even appear in the lottery computation tree.
Re: I'm a Berkeley prof. Working at a startup led me to update my 1500-person class
#6This is a weird assignment idea. I’d love to hear what you think, how you might improve it, etc. Some specific open questions I have: 1. How can I nudge students towards being creative with their comparators so that we get more variety? 2. Is there a natural extension that would get students working on the same files, yielding a richer demonstration of CI? 3. Could we allow students to somehow edit the contest code i…
* Generate a list of 1000000 pairs of random numbers. Run the Judge of each student on that list to get a new list of ternary numbers. Compare the list with the list of all the other students. The distance is the numbers of differences with the closest one. The one that is more far away wins a chocolate.
Perhaps add the variants like 123111213 -> 321333231 to detect mirror criteria.
Add 2222... (everyone ties) to avoid giving the chocolate to a lazy student.
(I guess it's easy to cheat with a good hashing method instead of an interesting criteria. :( )
* Generate a list of 1500 random numbers and join it with the 1500 numbers of the students. Use the Judge to compare the number of a student with all the other numbers. The objective is that the number of the student must be close to the middle. Perhaps 60% or 75%, to encourage been creative and cheating to win, but not too much. (I think you don't like "cheating", but for me it adds some fun.)
Re: I'm a Berkeley prof. Working at a startup led me to update my 1500-person class
#7I would spend my entire time trying to cheat or subvert the rules.
If a professor can inspire you to actively seek alternatives and/or think outside the box, I consider that a win.
Re: I'm a Berkeley prof. Working at a startup led me to update my 1500-person class
#8I'm sure it's hard/impossible to drive one through the bureaucracy, but it sounds like he should have pitched a new course on Contemporary Team Practices or something.
Re: I'm a Berkeley prof. Working at a startup led me to update my 1500-person class
#9This is a weird assignment idea. I’d love to hear what you think, how you might improve it, etc. Some specific open questions I have: 1. How can I nudge students towards being creative with their comparators so that we get more variety? 2. Is there a natural extension that would get students working on the same files, yielding a richer demonstration of CI? 3. Could we allow students to somehow edit the contest code i…
Just an idea. What if you created some sort of "robot" contest that defined various areas of functionality. Each robot could have sensors, motor controls, and the ability to reason on these. The interfaces of the robot would be modular and pluggable by student code; each student would collaborate on their teams robot, providing the logic for one of the interfaces. This effectively forces students to collaborate in a single repository.
The competition could include things like:
a) Teams of {n} students would build a robot collaboratively. They would each need to contribute into a shared team git repository and have a suite of CI tools that builds their code. The system pulls each robot and puts it into a continuously running competition, evaluating each robot for fitness. The contest is ongoing, so that each team can improve their team score (with more commits) until the assignment due date. Grades are given according to the top performers.
b) Like (a), but each student may collaborate on multiple robots and issue pull requests across multiple team repositories. The student with the most accepted pull requests is the winner.
I like the idea of a student placing their code into a larger vessel; collaboration with others through the use of modern software development methodologies. I also like the idea of seeing the "score" of the team robot being improved over time, as the team sees their robot moving up the charts. This helps incentivize the team towards improvement. "Gamifying" the system is a great way of encouraging student involvement.
I love that you're doing this assignment. As a full time software professional that has previously taught as an adjunct, I really appreciate that you're trying to teach concepts that are being actively used throughout industry.
[edit] As inspiration, think about the game Factorio as a potential model (without the graphics). Each student team would be responsible for a "line" on a production floor, each needing to process or assemble parts coming down the conveyor belt. The fittest team is the one that can correctly assemble the parts and deliver packages in the shortest time, etc.
Re: I'm a Berkeley prof. Working at a startup led me to update my 1500-person class
#10What do GitHub Actions and "team workflows" have to do with Data Structures? Even before he mentioned what he was inspired to ad, the course seemed scattered and superficial rather than foundational and preparatory. I'm sure it's hard/impossible to drive one through the bureaucracy, but it sounds like he should have pitched a new course on Contemporary Team Practices or something.