csc 213 – large scale programming
DESCRIPTION
Prof. Matthew Hertz WTC 207D / 888-2436 [email protected]. CSC 213 – Large Scale Programming. Objectives Met in CSC213. Develop solution over entire software lifecycle Specify & design computational solutions Implement & test computational solutions - PowerPoint PPT PresentationTRANSCRIPT
![Page 2: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/2.jpg)
Objectives Met in CSC213
Develop solution over entire software lifecycle Specify & design computational solutions Implement & test computational solutions Describe which data structure to use & explain why Describe execution of fundamental data structures
Know operational details of languages & systems Understand file structures, storage, and indexes
Know theoretical foundations of computing Trace & analyze algorithms
![Page 3: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/3.jpg)
High-level Objectives
Improve coding ability Learn skills needed to develop larger
systems Master tricks used to solve common
problems Have fun
![Page 4: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/4.jpg)
Expectations of Me
Lectures prepared and organized Give interesting, thoughtful, fun
problems Be (reasonably) available to answer questions Be honest and forthright
![Page 5: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/5.jpg)
Why Most Classes Suck
![Page 6: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/6.jpg)
Teaching Style
Reasoning more important than answer Since not reliable, lucky guesses are not
meaningful Explaining how & why demonstrates
mastery Once answered, rarely see question again
Class participation is vital Need to understand difficulty to adjust my
approach
![Page 7: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/7.jpg)
Adult Learning
Students will need to read material before class
Answer initial questions at start of class (Blissfully short) lecture explains key
ideas Provides 2nd opportunity to see material Limits long, boring droning
Students work in teams to solve problems Make sure you actually understand material Easy to correct mistakes if caught early in
learning
![Page 8: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/8.jpg)
Expectations of You
Work hard Come to class prepared Support & help all your teammates Ask for help early and often
Let me know what you are thinking
![Page 9: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/9.jpg)
Attendance
Attendance is mandatory Talk to me once you know you must miss
class You are responsible for every class Missing class is never acceptable excuse
Best way to earn a poor grade: skip class
![Page 10: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/10.jpg)
Deadlines
Have 1 “virtual extension” Only on programming projects will it be
accepted Use is automatic; no need to warn before
submission Extension on each weekly assignment
possible Given when good notes on reading
submitted on-time Must be used that week, but can be earned
every week Late work not accepted without
extension If you know you cannot make a deadline,
talk to me Earlier we talk, the better we can find a
solution
![Page 11: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/11.jpg)
Grading Philosophy
Grades reflect student's demonstrated ability Not a competition where grades are
relative Quite happily give "A" to all who earn it "A" not automatic because score is highest
in class Remain fair for students past, present,
& future When in doubt, I consider what is most fair
Hard work alone insufficient to raise a score Good life skill I want to reward: working
efficiently
![Page 12: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/12.jpg)
Course Grading
Midterms 30%Final 25%
Projects 18%Weekly Assignments 10%
Daily Activities 7%Quizzes 10%
Grades available via Angel Midterms given on Mar. 2nd & Apr.
11th
3 programming projects during semester
![Page 13: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/13.jpg)
Course Grading Goals
Build skills used by “real” programmers
Lots of opportunities to learn & improve
Present material in variety of ways Develop understanding needed for
later classes Catch and correct problems early
![Page 14: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/14.jpg)
Weekly Assignments
Posted on web/Angel each week Normally due by 5PM following Tuesday
Can earn virtual extension for all of these assignments
Should get 100% on all; ask me questions you still have
Several goals for these assignments Provide additional programming
opportunities Reinforce material from each lecture
Questions should seem easy & take under 10 min. Means you are doing well
![Page 15: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/15.jpg)
Quizzes
Show you understand material from class Short (20 min?) quiz completed individually
at start Followed by group quiz to help you learn
material Encourage you to stay up on material &
reading Work much less stressful if you stay up to
date If only working right before tests, stress may
be high Covers lectures & reading, so slides alone
may not help
![Page 16: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/16.jpg)
Programmer’s Notebook
Take notes on readings’ important details Course webpage contains helpful templates
to use Notes written by you so easy to understand (Don’t care where you get information from)
Use notebooks during labs & tests Without notebook, no answers to
related questions Can also use book, but book less useful than
own notes
![Page 17: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/17.jpg)
![Page 18: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/18.jpg)
Workings of My Slides
Slides contain many pictures, little text Lectures interesting & fun (or at least better) Provides you with good way to reinforce lessons
Increasingly suck as actual notes Print handout & take notes on the side as we go Make sure to write down steps shown in animations Slides (with notes) usable on tests, labs, class…
Win-win proposition (Except for the lazy ones of you…)
![Page 19: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/19.jpg)
Collaboration
Fellow students are a great resource Provides multiple viewpoints &
understandings Get together, discuss material, and
study Can have them answer lingering questions Clarify assignment and what it requires Learn and practice some basic social skills
![Page 20: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/20.jpg)
Collaboration
Work you submit must be done by you
When discussing homework or projects Leave conversation with memories only Wait 15+ minutes before starting on your
own Solutions always unique after waiting Step away from computer when discussing
code
When in doubt, ask me
![Page 21: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/21.jpg)
Coding Help
Will work on testing & debugging skills To get debugging help in CSC213
Method(s) must be commented (when appropriate)
Must use a trace or similar to look for bug Students find own solution once they start
doing this If problem not fixed, gives us starting point to
work Learn to fix your own errors & not rely on the
Professor
![Page 22: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/22.jpg)
Textbooks
Goodrich & Tamassia , Data Structures and Algorithms in Java, 5th Edition, Wiley, 2010.
Same as we used last term Nothing to buy this term! Save money for really nice bribe
Covering remainder of the textbook
![Page 23: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/23.jpg)
Angel Site for Class
Pages for course found on Angel Handouts, slides, assignments posted
before class Can also find solutions after work is due
May not include everything said in class Better than nothing, but worse than
being here!
![Page 24: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/24.jpg)
Why Do Models Matter?
Client has 2 programmers with different styles
Bob Joe
![Page 25: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/25.jpg)
More about Bob & Joe…
Bob codes like Joe paid attention & like he did in college does it correctly
![Page 26: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/26.jpg)
Starting the Project
Both look at notes from project executive
Bob then writes test cases & starts coding
Joe determines client’s needs in meetings
%Complete
Bob JoeWork (in
$)Rework (in
$)Work (in
$)Rework (in
$)20% $100,000 $0 $150,000 $0Total $100,000 $0 $150,000 $0
![Page 27: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/27.jpg)
Project Getting Going
Bob duplicates code, but with minor tweaks Slows progress & requires expensive
reworking Design minimizing code created by Joe
Client’s requirements examined; bugs found & fixed
%Complete
Bob JoeWork (in
$)Rework (in
$)Work (in
$)Rework (in
$)20% $100,000 $0 $150,000 $040% $100,000 $20,000 $100,000 $10,000Total $200,000 $20,000 $250,000 $10,000
![Page 28: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/28.jpg)
Passing the Halfway Point
Bob works from scratch & does not reuse code Lacks plan to incorporate existing code
Joe uses design to write comments & outlines Finds majority of errors during this process When possible, merges classes & simplifies
design%Comple
teBob Joe
Work (in $)
Rework (in $)
Work (in $)
Rework (in $)
20% $100,000 $0 $150,000 $040% $100,000 $20,000 $100,000 $10,00060% $100,000 $20,000 $100,000 $10,000Total $300,000 $40,000 $350,000 $20,000
![Page 29: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/29.jpg)
Project Nearing Completion
Bob’s code is project-specific & cannot be reused Getting concerned as project starts falling
behind Joe writes test cases from his system
design%Comple
teBob Joe
Work (in $)
Rework (in $)
Work (in $)
Rework (in $)
20% $100,000 $0 $150,000 $040% $100,000 $20,000 $100,000 $10,00060% $100,000 $20,000 $100,000 $10,00080% $100,000 $20,000 $100,000 $10,000Total $400,000 $60,000 $450,000 $30,000
![Page 30: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/30.jpg)
Final Rush to the Deadline
Bob cannot describe system to get extra help Completing system takes lots of all-nighters
Joe’s coding is easy with well-defined tests Code could be written by (cheap) trained
monkeys
Bob Joe
![Page 31: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/31.jpg)
Final Accounting
%Complete
Bob JoeWork (in
$)Rework (in
$)Work (in
$)Rework (in
$)20% $100,000 $0 $150,000 $040% $100,000 $20,000 $100,000 $10,00060% $100,000 $20,000 $100,000 $10,00080% $100,000 $20,000 $100,000 $10,000
100% $150,000 $20,000 $50,000 $10,000Total $550,000 $80,000 $500,000 $40,000
![Page 32: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/32.jpg)
What’s The End Result?
Bob barely finishes Occasionally
crashes Close to original
goal
Joe is tanned & rested Reliable & robust Follows design
perfectly
![Page 33: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/33.jpg)
Why These Phases Matter
![Page 34: CSC 213 – Large Scale Programming](https://reader035.vdocuments.us/reader035/viewer/2022062310/56815eda550346895dcd78bb/html5/thumbnails/34.jpg)
For Next Lecture
There is reading for Friday Reading available as link on Angel Start talking about how large programs
created
Must bring in 1st part of weekly assignment: Write 5 page paper on what YOU think
makes programmer good Cannot be longer than 2 sentences Be creative