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) |
![]() |
Type | Project | Concepts | Demo |
---|---|---|---|
Individual | Inverted index for Shakespeare | hashmap, structures | Census Name Data index and lookup |
Individual | Web Version of word index for Shakespeare | inverted index | Web based Census Name Data |
Group | Text Chat or Tick Tack Toe | fifo | Message sending Program |
Group | Enhanced Threaded Text Chat or Tick Tack Toe | Threads | Thread demo |
Group | Web Text Chat or Tick Tack Toe | Integration of previous features | None |
Individual | Text Display of Shakespeare from XML in c++ | XML with c++ | Bible XML Lookup |
Individual | Web Display of Shakespeare from XML | XL with Javascript and c++ | Bible XML display in browser |
Group | Full Word Index Project Gutenberg | Create new index design | sequential search |
Group | Project Gutenberg Word Web lookup | User Interface design | |
Group | Project Gutenberg Author and Subject Interface | Parsing of HTML, creation of index | |
Group | Project Gutenberg multi threaded for performance | User threaded sessions |
Date | Topic | Reading / Info | Quiz | Slides | Assignment Due |
---|---|---|---|---|---|
01-16 | Software Construction Project 0: Programming in the Linux environment |
Chapter 1 Census Name Information Demo Linux Introduction Emacs Cheat Sheet ![]() VIM Check Sheet ![]() ![]() Project 0 |
1._Software_Construction.ppt Introduction-to-Linux.pptx |
||
01-18 | Software Metaphors Name Data Demo |
Chapter 2 |
Link![]() |
2._Metaphors.ppt Linux Slides![]() |
|
01-20 | Preparation for coding, Inverted Index Project 1: Shakespeare Index |
Chapter 3, Map STL c++![]() Web Names Lookup ![]() ![]() |
Link![]() |
Chapter 3 | |
01-23 | Key Construction Decisions HTML |
Chapter 4, HTML Tutorial![]() Project 1 Review |
Link![]() |
Chapter 4 | Project 0 |
01-25 | Design in Construction Make Files |
Chapter 5 Make Files, The Make Command ![]() |
Link![]() |
Chapter 5 Make Files | |
01-27 | Project 2: Web Shakespeare Web Programming with Ajax |
Make Files , |
Link![]() |
CGI and AJAX![]() ![]() |
HTTP & CSS |
01-30 | Design in Construction Javascript |
Chapter 5 Make Files CGI and AJAX |
Chapter 5 | ||
02-1 | Project 2 Overview | ||||
02-3 | Collaborative Construction Group Formation |
Chapter 21 Questioneer ![]() |
Link![]() |
Chapter 21 CGI and AJAX | Project 1 |
02-6 | User Interface design Group Project 3: Text Chat or Tick Tack Toe |
User Interface Design Basics![]() Principles of User Interface Design ![]() User Interface Design Tips, Techniques, and Principles ![]() Interface Hall of Shame ![]() |
User Interface Design | ||
02-8 | Group Project 3: Web Chat or Tick Tack Toe User Interface and Program Design Brainstorming |
LucidChart![]() |
|||
02-10 | Project 2 discussion | ||||
02-13 | Introduction to GITHub | GIT Video![]() GIT HW ![]() |
Link![]() |
GIT Slides | Project 3 UI design |
02-15 | Group Work - Architecture and Protocol Design | Protocol Oveview GIT HW ![]() |
Project 2 | ||
02-17 | Working Classes | Chapter 6 | Link![]() |
Chapter 6 | GIT HW Project 3 Arch Design |
02-20 | Demonstration of GIT and creating a program that actively updates a list of processes. | ||||
02-22 | Demo Project 3 risk mitigation milestone. Group Work - |
Teams will explain and demonstrate work done to mitigate risks. | Project 3 Risk Mitigation![]() |
||
02-24 | High-Quality Routines | Chapter 7 | Link![]() |
7._High-QualityRoutines.ppt | |
02-27 | Defensive Programming | Chapter 8 | Link![]() |
8._DefensiveProgramming.ppt | |
03-1 | Demo complete project 3. Group work - Project 4. Brain Storm Features. | Project 3 | |||
03-3 | Midterm Exam - Study Guide | Chapters 1-8,21, User Interface Design, GIT | Link![]() |
||
03-4 - 03-19 | Spring Break | ||||
03-20 | Project 4 Overview, Team meetings | Project 4, Schedule Meeting![]() |
|||
03-22 | General Issues in Using Variables | Chapter 10 | link![]() |
10.Variables.ppt | |
03-24 | The Power of Variable Names | Chapter 11 | link![]() |
11.Variables.ppt | Project 4-1![]() |
03-27 | Team work on project 4-2 and 4-3 | Split into teams in class | Project 4-2![]() |
||
03-29 | Introduction to XML | XML Introduction![]() ![]() ![]() ![]() ![]() |
XML Overview![]() |
Project 4-3![]() |
|
03-31 | Project 5: XML Project | Project 5 - Individual Project | Bible Example![]() |
||
04-03 | Project 5: XML Project, continued | Project 5 - Individual Project | Bible Example![]() |
||
04-05 | Project 4 presentation | Be prepared to make a 6 minute well prepared presentation with demonstration. All team members should participate. | Project 4-4![]() Project 5 Proposal |
||
04-07 | Project 4 presentation Continue | Be prepared to make a 6 minute well prepared presentation with demonstration. All team members should participate. | |||
04-10 | Multi-threaded Coding, timers, Drop downs. | POSIX Threads Programming | |||
04-12 | Project 5 Work and information | Tutorial: Parsing XML with JQuery | |||
04-14 | Project 5 Work and information | XML Parser for C++![]() ![]() |
|||
04-17 | Project 6: Massive Word Search | Demo Program![]() Demo Software: /home/class/SoftDev/SearchBooks Project 6 |
|||
04-19 | Project 5 Presentations | Be prepared to demonstrate and talk about your project | Project 5 Complete | ||
04-21 | Using Conditionals | Chapter 15 | Chapter 15 | ||
04-24 | Controlling Loops | Chapter 16 | Chapter 16![]() |
Project 5 Design | |
04-26 | Binary IO | Good Reference: Link![]() /home/class/SoftDev/binaryFiles |
RecordFieldsBinaryIO.ppt | Project 6 - Algorithm Design | |
04-28 | Unusual Control Structures, Table-Driven Methods | Chapter 17, 18 | Chapter 17 Chapter 18 ![]() |
Project 6 - Code proving design | |
05-1 | Personal Character | Chapter 33 | Chapter 33 | ||
05-3 | The Software-Quality Landscape | Chapter 20 | Chapter 20![]() |
Project 6 - Complete System | |
05-5 | Developer Testing | Chapter 22 | Chapter 22 | ||
05-9 | 6:30-9:30pm | Final Presentation Project 6 | Evaluation Form![]() |
Moodle Link for Final Presentation![]() Moodle Link Complete Project ![]() |
Criteria | Excellent | Acceptable | Unacceptable![]() |
---|---|---|---|
25-20% | 19-11% | 10-0% | |
Efficient & Elegant (The program uses both time and space on the computer effectively, without losing source code clarity.) |
|
|
|
Adaptable & Reusable (The program is modular, using abstraction well and any limitations are clearly specified.) |
|
|
|
Documented & Maintainable (The program is well-documented with appropriate names and comments making it easy to understand.) |
|
|
|
Robust & Correct (The program provides the correct output for all possible input.) |
|
|
|
SCMP39100S17@kenyon.edu
Jessie Alperin <alperinj@kenyon.edu>, Ghada Bakbouk <bakboukg@kenyon.edu>, Preston Basting <bastingp@kenyon.edu>, Miku Fukuyama <fukuyamam@kenyon.edu>, gavinhannerc@kenyon.edu, grigullb@kenyon.edu, Elizabeth Iduma <iduma1@kenyon.edu>, khanm@kenyon.edu, murphy1@kenyon.edu, Tess Neau <neaut@kenyon.edu>, ogilviethompsonh@kenyon.edu, Daniel Olivieri <olivierid@kenyon.edu>, riveraj@kenyon.edu, Joseph Schutz <schutzj@kenyon.edu>, seavera@kenyon.edu, solorioc@kenyon.edu, twitchelln@kenyon.edu, vances@kenyon.edu, John Wilhelm <wilhelmj@kenyon.edu>, Yanqi Xu <xuy@kenyon.edu>FacultyResourceSSD