Kevin Song
I'm a student at UT (that's the one in Austin) who studies things.
We give you
You give us
A few hundred lines of code that pass the tests. You write almost all of this code.
Code is written once but read many times.
A lot of programming time is spent understanding existing code and how to interface new code with it.
Example: how do I get the standard library HashMap to do (_____)?
Is it possible to get this programming framework to do (________) or do I have to do it myself?
Existing code has context.
void traverse(Tree* root, Function* fptr){
for(int i = 0; i < root.numChildren; ++i){
traverse(root->children[i], fptr);
}
*fptr(root);
}
BIG
Most submissions came in between 400 and 1000 lines of non-comment, non-blank C.
UTCSH
Pintos has 11.5k lines of C (13.5k if you count headers)
Almost 10x as much code!
UTCSH
Pintos
About 6 million lines of code (600x more)
(not to scale)
UTCSH
Pintos
GCC
28 million lines of code and counting
UTCSH
Pintos
GCC
Linux
In other words, it won't scale to real software projects!
void traverse(Tree* root, Function* fptr){
for(int i = 0; i < root.numChildren; ++i){
traverse(root->children[i], fptr);
}
*fptr(root);
}
What's in this code?
Do I need to rewrite this function?
How does this function relate to these data structures?
What does this function assume about its inputs? Are these assumptions valid?
I want to know more about struct Block
I want to know how each of struct Block's members are used in various functions
(Once you're ready)
By Kevin Song
I'm a student at UT (that's the one in Austin) who studies things.