The Constraints of the Course
- Taught in Java, with Eclipse - 10 programming assignments - Use of ZyBooks for course content and participation-grade quizzes - An Autograder - One TA per 50 students
1. What should the policy on collaboration or pair programming be for the 10 assignments? Why? 2. What should take the place of the traditional midterm and the final exam? 3. How should autograders be used differently? In particular, propose one different use of autograders than what you saw with students who you helped in CS 300 this semester. 4. Knowing the course will be totally online, how should lectures be organized and delivered? Live? Recorded? How many, and how often? 5. What additional, new activities or assignments should be added to improve student engagement and connection? Propose two activities or assignments, at least one of them must count towards 10% of the student's grade.
At least five of the assignments should allow students to pair program. As a learner, I felt that it was beneficial for me to have someone watch over my shoulder. According to “Pair Programming in an Introductory Computer Science Course: Initial Results and Recommendations,” students who chose to pair program scored higher on both exams and assignments. I think that it pushes people to write clean and well-thought-out code.
If there is no final or midterm, I would suggest going with the route that CS 400 took this semester. They are giving their students a timed coding challenge in place of the final. Since many interviews rely on the fundamental CS topics taught in CS 300, this would be a perfect opportunity to give them a programming challenge and a few conceptual questions. As someone who was actively seeking internships, these types of exams would have helped me a lot.
Autograders are not teaching students how to debug and test their code. As a tutor, I noticed that some students would use the autograder scripts as a replacement for actual test cases. I suggest that students should only be allowed to submit their code to Gradescope if they have at least a couple of cases testing a particular method. If the autograder fails, it should also print out a stack trace for students to look at.
I believe that the lectures should be live (with code and lecture slides provided) unless someone needs a recording. By making the lectures live, you can do breakout sessions and ask questions on TopHat. When I was in CS 300, the TopHat questions made me think critically about the course material. Also, as a learner, I feel like you should implement lecture outlines not only because they force the student to write, but also because I noticed that professors tend to move at a much more comfortable pace.
As mentioned above, including TopHat questions would be an excellent way to keep the class engaged. If you could do break out sessions and allow students to talk with each other on BlackBoard Collaborate, it would feel much more like an in-person classroom. For the 10% assignment, I think it would be rewarding for students to do a 1-2 person project using course concepts near the end of the semester. The topic must relate to something that benefits society such as addressing COVID-19.
While I was browsing the Vue.js docs, I came across a very interesting website called Scrimba. You can view tutorials and modify the code that the instructor wrote! This would be an excellent tool to use for lectures with code since being curious in CS classes is key. Try it out here: https://scrimba.com/p/pXKqta/cQ3QVcr.