Curricularizing the ACM... ? Zach Dodds ~ November 13, 2010
Hard-won lesson #1: at HMC, if you want students to participate in something, curricularize it! Four undergraduate years ≈ 190 students each Every student must pass CS 1 Concrete mascot, Wally Wart
Our one-unit CS 189 class... Tuesdays 4:15-5:30 pm each week...
Our one-unit CS 189 class... Hard-won lesson #2: at HMC, if you want students to participate in something, provide food!
Running total of problems solved weekly problem sets of 4-6 problems... graded via a script that runs diff on our server worth 2 points, if done by 10pm Tuesday; 1 point otherwise week 0week 1week 2week 3 Waterloo et al.!
Short lectures dynamic programming 45 minutes every other Tuesday... Other meetings are lab sessions. No teaching credit for this, but good will credit == at least half the food! graphs geometry Binary Search
This week: cow placement Input Output Number of cow stalls in the barn The locations of stalls Number of cows to put in the stalls 8 The largest minimum spacing possible after placing the cows The barn! how do we best fit 2 cows? 3 cows? 4?
# get (N) # of stalls, (C) cows, and (S), the stalls N = input(); C = input(); S = []; for i in range(N): S += [input()] # list o' stalls S.sort() # sort them! lo = 0 hi = max(S)-min(S)+1 while True: mid = (lo + hi)/2 # does anyone see the bug here? if mid == hi or mid == lo: break if CHECKS_OUT( mid, C, S ): lo = mid # it worked! Look higher (set lo to mid) else: hi = mid # it didn't work Look lower (set hi to mid) print mid # output the result! cows code binary search input BS setup
This bug went undetected in Java's libraries for years...
Our general strategy Give 75% of the code for one problem... Allow use of any language... Keep contest in perspective... If something isn't useful to all CS majors, we don't bother. Everyone gets that problem, at least. Everyone has a good start on the next problems that use binary search!
ACM: a light hat to wear... Thoughts... ? Problems + Food = ACM class Andrew Lilian
ACM today! Nice work to everyone in the qualifiers and evening lab... Today: BS! Next 11/2: guest speaker... On 11/9: final lab session 11/13: regionals On 11/16: wrap-up
ACM this week!?
Next week This talk is optional, but it should be good! In addition, it's 2 problems... It may count as a colloquium, too...
Jotto! SophsJrsSrsProfs pluot 1pluot 2pluot 1pluot 2 squid 2squid 1squid 0squid 1 sophomores remain... fails 2 fails 0fails 2 cache 1cache 2cache 3cache 0 china 1 quail 1 china 2 quail 3 china 3 quail 0 china 0 quail 2 conch 0 conch 1 conch 5 conch 0 laugh ?laugh 5laugh xlaugh 2
Problem D from the 2009 World Finals in Stockholm: Pipe Packing Given a set of four wire diameters: What is the minimum diameter of pipe that can contain all four wires? (Constraint: pipes only come in millimeter sizes)
A lower bound: sum of largest two wire-diameters An upper bound: sum of all four wire-diameters l Binary search between lower bound and upper bound l Given a pipe diameter and four wire diameters, can you pack the wires inside the pipe? l Choose the smallest integer pipe diameter that fits Intuition: Solve this problem by binary search
Binary search in a sorted list... What's next... ? in Python we want to return True or False: is val in S?
This week's problems… palpath city aggr cowset flood2 These three are all examples of problems for which binary search might be a good technique… could be used here, too...
Problem D from the 2009 World Finals in Stockholm: Pipe Packing Given a set of four wire diameters: What is the minimum diameter of pipe that can contain all four wires? (Constraint: pipes only come in millimeter sizes)
A lower bound: sum of largest two wire-diameters An upper bound: sum of all four wire-diameters l Binary search between lower bound and upper bound l Given a pipe diameter and four wire diameters, can you pack the wires inside the pipe? l Choose the smallest integer pipe diameter that fits Intuition: Solve this problem by binary search
Enjoy! Thoughts... ?
Last week: wifi InputOutput The # of access points and the # of houses The # of test cases... Locations of the houses The smallest max distance achievable
This week: city Input Output dist cost of 1 st story # of people to house 194 The minimium cost to house the specified # of people cost per unit distance from (0,0) maximum # of stories per building the central station where everyone works is at (0,0) distances to it are considered to be |x|+|y|-1 0 dist 1 dist 2 dist 1 dist 3 dist
This week: cowset Input Output ID # for 1 st cow # of cows available, up to 34 5 The number of subsets whose IDs sum between min and max minimum ID sum maximum ID sum Farmer Ran is willing to play frisbee with any subset of cows whose IDs sum to any value between the min and max... ID # for 2 nd cow ID # for 3 rd cow Try all subsets...?
This week: cowset Input Output ID # for 1 st cow # of cows available, up to 34 5 The number of subsets whose IDs sum between min and max minimum ID sum maximum ID sum Farmer Ran is willing to play frisbee with any subset of cows whose IDs sum to any value between the min and max... ID # for 2 nd cow ID # for 3 rd cow Takes too long to try all subsets...! How could Bin Search speed it up?
Try this week's problems! Perhaps start with aggr...