teaching operating systems using code reviecdall/pubs/sigcse2014_talk.pdf · conclusions •...

29
Teaching Operating Systems Using Code Review Christoffer Dall and Jason Nieh Columbia University

Upload: others

Post on 23-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Teaching Operating Systems Using Code Review

Christoffer Dall and Jason Nieh Columbia University

Page 2: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Learning OS is hard

• Operating Systems are large and complicated

• Hands-on experience is crucial

• Modification to large and unfamiliar code bases

Page 3: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Teaching OS is hard

• Programming assignments must be reviewed

• Code is dense and spread out

• Disproportionate amount of time spent evaluating compared to teaching

Page 4: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

GradeBoard

• Code review system designed for the classroom

• Web-based, intuitive, easy-to-use

• Build on Git and ReviewBoard

• Supports entire workflow of teaching OS

Page 5: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Outline

• Usage Model

• System Architecture

• Evaluation

• Conclusions

Page 6: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Usage Model

• Instructors and students

• Instructors create, distribute, and grade programming projects

• Students download, backup, collaborate, and submit programming projects

Page 7: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

WorkflowNew Assignment Create template

repositoryDistribute student

repositories

Student WorkGit push to serverDeadlineUpload to Review

Board

Instructors grade assignments

Release comments

Students discuss comments

Page 8: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

The Web Interface

Page 9: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

The Web Interface

Page 10: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Instructor FeedbackGrade Student A

Grade Student B

Grade Student C

Grade Student D

Time

Release all grades

Page 11: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:
Page 12: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

System Architecture

Git ReviewBoard

Management

Page 13: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:
Page 14: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Review Board

• Web-based interface

• Commercially maintained open-source tool

• One trivial change to the authentication system to prevent students from modifying their submissions

Page 15: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Management Tool

• Abstracts away low-level commands to classroom commands like: • create-homework • distribute-homework • upload-reviews

• Keeps single central list of registered students

Page 16: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

OS @ Columbia• 6 two-week programming assignments

• Modifying the Linux kernel for Android

• Intro to C, system calls, synchronization, virtual memory, scheduler, file systems

• Live demonstrations

• Careful code review

Page 17: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Evaluation

• Used GradeBoard at Fall 2011 Columbia OS course

• Over 100 registered students

• Survey participation: 57%

Page 18: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

GradeBoard Improved Homework Understanding

92%

8%

No Yes

Page 19: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Preferred compared to e-mailed score sheets

81%

19%

No Yes

Page 20: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Preferred compared to comments in Git

81%

19%

No Yes

Page 21: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Encouraged well-formatted code

46%54%

No Yes

Page 22: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

–Nicolas Viennot, Head TA Fall 2009

“I wish I had this tool when I taught operating systems last year.”

Page 23: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Unexpected Benefit

Page 24: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Conclusions• Implemented and evaluated GradeBoard

• Students learn better with GradeBoard for 2 reasons: • Comments inlined with student work • Student feedback identifies problem areas

• Over 80% of all submitted projects were discussed

• Free and maintained

• Students and instructors prefer GradeBoard over known alternatives

Page 25: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Questions?

Page 26: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Backup Slides…

Page 27: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Potential Solutions

• Grade Sheets: Manual and tedious

• Inline comments: requires use of command-line tools, time consuming

• Difficult for students to use

Page 28: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Problem Space

• Most hands-on OS assignments are based on some existing code base

• Both teaching OSes and commercial OSes

• No read-from-start-to-finish

Page 29: Teaching Operating Systems Using Code Reviecdall/pubs/sigcse2014_talk.pdf · Conclusions • Implemented and evaluated GradeBoard • Students learn better with GradeBoard for 2 reasons:

Problem Space: Options

• Live demonstrations

• Automated Testing

• Doesn’t work, must evaluate the code