340 likes | 466 Views
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
E N D
Prof. Matthew HertzWTC 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 • 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 tricksused 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
Teaching Style • Reasoning more important than answer • Since not reliable, lucky guesses are not meaningful • Explaining how & whydemonstrates 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 opportunityto 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 knowyou 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 • Grades available via Angel • Midterms given onMar. 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 stressfulif 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 suckas actual notes • Print handout & take notes on the side as we go • Make sure to write down steps shown in animations • Slides (with notes) usableon 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 remainderof 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 likeJoe paid attention & like he did in collegedoes 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
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
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
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
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
What’s The End Result? • Bob barely finishes • Occasionally crashes • Close to original goal • Joe is tanned & rested • Reliable & robust • Follows design perfectly
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