CSC 213 – Large Scale Programming

Preview:

DESCRIPTION

Prof. Matthew Hertz WTC 207D / 888-2436 hertzm@canisius.edu. 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 Presentation

Citation preview

CSC 213 – LARGE SCALE PROGRAMMING

Prof. Matthew HertzWTC 207D / 888-2436 hertzm@canisius.edu

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

High-level Objectives

Improve coding ability Learn skills needed to develop larger

systems Master tricks used to solve common

problems Have fun

Expectations of Me

Lectures prepared and organized Give interesting, thoughtful, fun

problems Be (reasonably) available to answer questions Be honest and forthright

Why Most Classes Suck

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

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

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

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

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

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

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

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

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

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

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

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…)

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

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

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

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

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!

Why Do Models Matter?

Client has 2 programmers with different styles

Bob Joe

More about Bob & Joe…

Bob codes like Joe paid attention & like he did in college does it correctly

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

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

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

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

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

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

What’s The End Result?

Bob barely finishes Occasionally

crashes Close to original

goal

Joe is tanned & rested Reliable & robust Follows design

perfectly

Why These Phases Matter

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

Recommended