There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. C. A. R. Hoare (1980 Turing Award Lecture) |
Code Complete, Second Edition![]() Microsoft Press; 2nd edition (June 19, 2004) |
![]() |
Category | % | Notes |
---|---|---|
Homework | 15 | Due by class time on day assigned. Not accepted Late |
Quizzes | 10 | In class, at beginning. Weekly. No makeup without medical note. |
Individual Project | 30 | Due by midnight on day due. 5% penalty for for up to 12 hours late. One assignment may be up to 24 hours late with no penalty with instructor notification. Projects have intermediate milestones and final complete project. Each milestones are typically worth 10-20 points, while the final grade is 100 points. |
Team Project | 30 | Similar grading as above. All members are typically given the same grade unless there is evidence of certain team mambers. |
Exams | 15 | There is a traditional individual midterm, while the final is a public group presentation on the final project. |
Date | Topic | Reading / Info | Quiz![]() |
Slides | Assignment Due |
---|---|---|---|---|---|
09-03 | Software Metaphors | Chapter 2 - Software Metaphors Linux Introduction PuTTY ![]() Project 0 Notepad++, BBEdit ![]() ![]() ![]() ![]() ![]() ![]() |
Link![]() |
||
09-07 | Project Preparation HTML, CSS |
Chapter 3.1-3.3 - Software Prerequisites Requirements Checklist CGI and AJAX ![]() |
Link![]() |
Chapter 3![]() |
Project 0 |
09-10 | Make Files, Bootstrap | Make Files, Make Tutorial![]() ![]() ![]() ![]() |
Link![]() |
Make Files![]() ![]() |
|
09-17 | Javascript and JQuery. | Javascript Tutorial![]() ![]() ![]() ![]() |
Link![]() |
Video to watch on Ajax![]() JavaScript & jQuery Tutorials ![]() |
|
09-19 | Project preparation Questions on projects |
Chapter 3.4-3.6 - More Prerequisites | Link![]() |
Chapter 3![]() |
|
09-24 | Key Construction Decisions Project 3-3 process communication |
Chapter 4 - Key Construction Decisions Names with Client/Server ![]() |
Link![]() |
Chapter 4![]() XML Overview ![]() |
|
09-26 | Introduction to XML | XML Introduction![]() ![]() |
Link![]() |
Introduction XML Part 1![]() Introduction XML Part 2 ![]() Introduction XML Part 3 ![]() |
Project 1, Part 2 |
10-05 | Introduction to Git and Github | GIT Video![]() ![]() GIT HW |
Link![]() |
GitHub.pdf Introduction to git and github ![]() |
|
10-17 | The use of Metaphor in visualization | Paper: On the role of metaphor in information visualization, What makes a good visualization![]() |
Link![]() |
Metaphor and Visualization![]() |
GIT HW |
10-22 | Midterm Exam - Study Guide | Chapters 1-5, User Interface Design, GIT | Link![]() |
||
10-26 | MySQL and the World Database | SQL World Database, phpmyadmin![]() ![]() ![]() |
Link![]() |
SQL![]() |
|
11-02 | Design Practices Project examples |
node.js![]() ![]() ![]() ![]() ![]() ![]() |
link![]() |
Design in Programming![]() |
SQL HW 2- phpmyadmin |
11-05 | Working Classes | Chapter 6 | Link![]() |
Class Design![]() |
Project 4 - Part 1![]() |
11-28 | Defensive Programming | Chapter 8 | Link![]() |
Chapter 8![]() |
|
11-30 | Collaborative Programming | Chapter 21 | Link![]() |
Chapter 21![]() |
|
12-10 | Personal Character | Chapter 33 | Link![]() |
Chapter 33 | |
08-31 | Software Construction Project 0: Programming in the Linux environment |
Chapter 1 Census Name Information Demo ![]() |
Software Construction![]() |
Student Information![]() |
|
09-05 | Name Data Demo, Inverted Index Project 1, Part 1: Shakespeare Index |
Map STL c++![]() Web Names Lookup ![]() NamesDemo code (github) ![]() ![]() Filezilla ![]() Project 1 Review |
|||
09-12 | Makefiles
|
The Demo code for Name program The English stemmer example. C++ Web Programming ![]() |
CGI and AJAX![]() ![]() |
HTTP & CSS | |
09-14 | Web Programming with Ajax & Javascript |
Ajax Tutorial for Beginners![]() CGI and AJAX Name Data Web Program Link ![]() github Link ![]() |
JavaScript![]() ![]() |
||
09-21 | Project 1, Part 3: Client/Server Web Shakespeare | Project 1-3 discussion Names with Client/Server ![]() |
JavaScript and JQuery Tutorial Work
|
||
09-28 | Project 2: XML Lookup User Interface design |
Project 1-3, Protocol Oveview , ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Bible Example![]() ![]() |
||
10-01 | Design in Construction Processing XML using jQuery |
Chapter 5.1-5.3 Sample of C++ processing XML ![]() ![]() XML processing with jQuery ![]() ![]() XML with Bible ![]() |
Design in Programming![]() |
||
10-03 | Project 2 User Interfaces |
Project 2: XML Project User Interface Design Basics ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
User Interface Design![]() |
Project 1, Part 3 |
|
10-08 | Visit to Gund Art Gallery |
Please meet at the Gund Gallery - be there before 12:10 if possible. Mapping Properties of Data in Visual Form ![]() |
Project 2, Proposal | ||
10-10 | Project 3: Data Visualization, metaphor, and visual communication. | visap2015_Cruz_WrongfullyRight.pdf - Please read before class, Visualizing empires decline 1![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Project 2, Interface Design | ||
10-12 | Midterm break | ||||
10-15 | Project 3 - Project discussion and brainstorming. | Github example, Visualization Examples | |||
10-19 | More on Visualization, Group formation | Project 2, Complete | |||
10-24 | Team Presentations on Visualization Plan | Show mockups, explain goals. | Project 3 Proposal | ||
10-29 | Introduction to SQL, phpmyadmin, node.js | Learn SQL![]() ![]() ![]() |
|||
10-31 | Project 4 : Phone App, MySql![]() |
C++/MySQL tutorials![]() ![]() ![]() ![]() |
Project 3 Prototype SQL HW 1 |
||
11-07 | Demostrations | Chapter 7 | Routine Design![]() |
Project 3 Complete | |
11-09 | A visit to Gund Gallary. | Code Review Project 3 | |||
11-12 | Project 5: Interactive two-user system with with Database | Project 5 | |||
11-14 | Automatic updating webpages Project 5 Group formation |
Chat App![]() ![]() ![]() ![]() ![]() |
Project 4 - Complete![]() |
||
11-16 | Project Team work | Team meeting to work on project ideas | |||
Nov 17-24 | Thanksgiving Break | ||||
11-26 | Project 5 Concept presentations | Be prepared to demonstrate and talk about your idea Chapter 7 |
Routine Design![]() |
Project 5 Part 1: Project concept,and team formation![]() |
|
12-03 | Group Work Day | Simple Gravity Example![]() |
Project 5 Part 2: Complete Project Design using Metaphoric concepts | ||
12-05 | Project 5 presentations | Present Architecture in class | Project 5 part 3: Architectural Design![]() |
||
12-07 | Project 5 Team Work Day | ||||
12-12 | Developer Testing Project 5 Working prototype demos |
Chapter 22 | Chapter 22![]() Assessment Form ![]() |
Project 5 Prototype Demo![]() |
|
12-14 | Team work | Project 5 - Part 5 - complete system![]() |
|||
12-20 | 8:30-11:30am | Final Presentation Project 5 | Evaluation Form![]() |
Final Presentation![]() ![]() ![]() |
Criteria | Excellent | Acceptable | Unacceptable |
---|---|---|---|
Documented & Maintainable (The program is well-documented with appropriate names and comments making it easy to understand.) |
|
|
|
Adaptable & Reusable (The program is modular, using abstraction well and any limitations are clearly specified.) |
|
|
|
Robust & Correct (The program provides the correct output for all possible input.) |
|
|
|
Efficient & Elegant (The program uses both time and space on the computer effectively, without losing source code clarity.) |
|
|
|
25-20% | 19-11% | 10-0% |