340 likes | 486 Views
In CSC 213, students will embark on a comprehensive journey through the software development lifecycle. This course focuses on developing computational solutions from specification to testing, emphasizing proper data structure usage, algorithm analysis, and understanding computing foundations. Students engage in collaborative problem-solving and hands-on coding, with lectures designed to stimulate thought and participation. Attendance and preparation are pivotal, alongside regular assessments that reinforce understanding. With a grading philosophy that rewards effort and ability, this course aspires to cultivate proficient programmers ready for real-world challenges.
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