L2 Course Overview
L2 Course Overview
Wyatt Lloyd
Learning Objectives
• Reasoning about concurrency
• Reasoning about failure
• Reasoning about performance
• Nathan Finkle
• Jeffrey Helt
• Jennifer Lam
Grading
• Two exams (50%)
• Midterm 25%
• Final 25%
• Assignments (50%)
• Five assignments 10% each
Exams
• In person exams
• 2-3 hours: should not have time pressure
• Closed book
• Midterm
• Registrar will schedule during week of Oct 10-14
• Hopefully Oct 12
• Either 2 or 3 hours
• Final
• Registrar will schedule somewhere in Dec 17-23
• 3 hours
Exams
• Test learning objectives mostly using designs covered in lectures
• 1: “MapReduce” in Go
• 2: Distributed Snapshots
• 3: Raft Leader Election
• 4: Raft Log Consensus
• 5: Key-Value Storage Service
Programming Assignments
• All are individual assignments
• Late policy
• G = Grade you would have earned if turned in on time
• 1 day late => 90%*G
• …
• > 5 days late => 50%*G
Policies: Write Your Own Code
Programming is an individual creative process. At first,
discussions with friends is fine. When writing code, however,
the program must be your own work.
13
Policies: Write Your Own Code
Programming is an individual creative process. At first,
!
discussions with friends is fine. When writing code, however,
the program must be your own work.
i z e
a r
Do not copy another person’s programs, comments, or any part
i
of submitted assignment. This includes character-by-character
a g
transliteration but also derivative works. Cannot use another’s
l
code, etc. even while “citing” them.
’ t P
Writing code for use by another or using another’s code is
n
academic fraud in context of coursework.
o
D
Do not publish your code e.g., on github, during/after course!
14
Warnings
This is a 400-level course,
with expectations to match.
15
Warning #1:
Assignments are a LOT of work
• Assignment 1 is purposely easy to teach Go. Don’t be fooled.
• Starting 3-4 days before deadline for later assignment => Disaster.
16
Programming Assignment Statistics
• Self Reported Hours Spent on Assignments: Median [Min-Max]
• 1-1: 2 [1-6]
• 1-2: 3 [1-8]
• 1-3: 4 [1-10]
• 2: 6 [2-15]
• 3: 12 [5-29]
• 4: 30 [10-100+]
• 5: 14 [3-25]
Warning #2:
Software engineering, not just programming
• COS 126, 217, 226 told you how to design & structure your
programs. This class doesn’t.
• Real software engineering projects don’t either.
• You need to learn to do it.
• If your system isn’t designed well, can be significantly
harder to get right.
• Your friend: test-driven development
• We’ll supply tests, bonus points for adding new ones
18
Warning #3:
Don’t expect 24x7 answers
• Try to figure out yourself
• Ed discussion not designed for debugging
• Utilize right venue: Go to office hours
• Send detailed Q’s / bug reports, not “no idea what’s wrong”
• Staff are not on pager duty 24 x 7
• Don’t expect response before next business day
• Questions Friday night @ 11pm should not expect fast responses.
Be happy with something before Monday.
• Implications
• Students should answer each other
• Start your assignments early!
19
Programming Assignments
• Recipe for disaster
• Start day assignment is due
• Write code first, think later
• Test doesn’t pass => randomly flip some bits
• Assume you know what program is doing
Programming Assignments
• Recipe for success
• Start early (weeks early)
• Think through a complete design
• Progressively build out your design (using tests to help)
• Checkpoint progress in git (and to github) frequently
• Debug, debug, debug
• Verify program state is what you expect (print it out!)
• Write your own smaller test cases
• Reconsider your complete design
• Attend office hours
Programming Assignment Office Hours
• 6+N*4 hours of office hours per week!
• Expectations
• No: “You have a bug on line 17.”
• Yes: Helping you think like they would think about a problem
Course Overview Conclusion
• Attend lecture, attend precept, think actively!