Software Development

James Skon
Fall 2017
Location: Hayes 309A, Time: 11:00, Days: TH
Office Hours: 10-11 MWF.
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)


This course gives students experience designing, implementing, testing and debugging moderately complex systems of software components that collectively form a multilayer application. There will be an emphasis on crafting quality code, designing and implementing effective user interfaces, and building multicomponent architectures using a mix of off-the-self and custom code.Topics will include inner process and inter-system communication, multi-threading, and the synchronization of shared resources, web interfaces, and working with large data sets. Students will primarily use C++, but also will learn Javascript and other languages as needed. Prerequisite: SCMP 118 or permission of instructor.


Code Complete, Second Edition; Steve McConnell;
Microsoft Press; 2nd edition (June 19, 2004)

Technical Topics

  • Using the Linux Server
  • C++ Iterators and algorithms
  • Text Parsing
  • Haspmap and building an inverted index
  • Interprocess communication using FIFO class
  • Client/Server architectures
  • JavaScript, HTML and CSS
  • JavaScript with timing intervals.
  • AJAX and CGI communication
  • XML Processing
  • JQuery
  • SQL
  • SQL and C++

Tools links





Date Topic Reading / Info Quiz Slides Assignment Due
01-15 Software Construction
Project 0: Programming in the Linux environment
Chapter 1
Census Name Information Demo
Linux Introduction
Project 0
01-17 Software Metaphors
Name Data Demo

Chapter 2
Notepad++, TextWrangler

HTTP & CSS, HTML Tutorial

Link 2._Metaphors.ppt Linux Slides Questioneer
01-19 Preparation for coding, Inverted Index
Project 1, Part 1: Shakespeare Index
Chapter 3, Map STL c++
Web Names Lookup
Name Data Files - From US Census Data
Link Chapter 3 Project 0
01-22 Key Construction Decisions
Chapter 4
Project 1 Review
Link Chapter 4  
01-24 Design in Construction
Make Files, Bootstrap
Chapter 5
Make Files, The Make Command, Bootstrap, BootStrap Course, BootStrap Tutorial
Link Chapter 5 Make Files HTTP & CSS
01-26 Project 1, Part 2: Simple Web Shakespeare
Web Programming with Ajax

Make Files , The Make Command
The Demo code for Name program
The English stemmer example.
C++ Web Programming

Ajax Tutorial for Beginners

Link CGI and AJAX

Project 1, Part 1

Meet with Professor for code review

01-29 Design in Construction
Chapter 5
Make Files
  Chapter 5 Bootstrap
01-31 Javascript and JQuery Javascript Tutorial, JQuery Tutorial, Learn JQuery      
02-3 Project 1, Part 3: Client/Server Web Shakespeare
Protocol Oveview

Project 1, Part 2

Code Review

02-6 Working Classes Chapter 6 Link Chapter 6  
02-8 High-Quality Routines
Introduction to XML
Chapter 7
XML Introduction, MathML, Shakespeare, Bible, Quran
XML Parser for C++ , Documentation
Demo Software: /home/class/SoftDev/cppXMLAJAX/
Link 7._High-QualityRoutines.ppt
XML Overview
02-10 Project 2: XML Lookup Project 2: XML Project, Tutorial: Parsing XML with JQuery   Bible Example, Other examples  
02-13 User Interface design User Interface Design Basics
Principles of User Interface Design
User Interface Design Tips, Techniques, and Principles
Interface Hall of Shame
  User Interface Design Project 1, Part 3
02-15 Defensive Programming
Chapter 8
Link DefensiveProgramming.ppt Project 2, Proposal
02-17 Introduction to GITHub GIT Video - View for quiz , GitHub for beginners
Link GIT Slides Project 2, Interface Design
02-20 Collaborative Programming
Group Formation
Chapter 21
Link Chapter 21 GIT HW
02-22 Project 3: Data Visualization, metaphor, and visual communication. Project 3
Visualization Introduction - watch before class
Link   Project 2, Complete
02-24 Project 3 - Project discussion and brainstorming.
Group Formation
visap2015_Cruz_WrongfullyRight.pdf - Please read before class Link    
General Issues in Using Variables
Group Work
Chapter 10 link 10.Variables.ppt
03-1 The Power of Variable Names Chapter 11 link 11.Variables.ppt Project 3 Proposal
03-3 Team Presentations on Visualization Plan Include Power points with mockups     Project 3 Presentation
03-4 - 03-19 Spring Break        
03-20 Midterm Exam - Study Guide Chapters 1-11,21, User Interface Design, GIT Link    
03-24         Project 3 Version 1
03-27 Project 3 Code Reviews Be prepared to show and describe code in class for 10 minutes.     Code Review
03-29 Introduction to SQL, phpmyadmin SQLTutorial, Learn SQL, phpmyadmin Tutorial      
03-31 MySQL and the World Database SQL World Database     SQL HW 1
04-03 MySql with C++ C++/MySQL tutorials     SQL HW 2- phpmyadmin
04-05 Project 4: Web Chat with Database Project 4     SQL/C++ HW
04-07 Project 4 Group formation        
04-10 Multi-threaded Coding, timers, Drop downs.        
04-12 Project 5 Work and information        
04-14 Project 5 Work and information XML Parser for C++, Documentation
Demo Software: /home/class/SoftDev/cppXMLAJAX/
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
  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

Software project grading rubric

Criteria Excellent Acceptable Unacceptable
Documented & Maintainable
(The program is well-documented with appropriate names and comments making it easy to understand.)
  • all naming conventions are followed
  • both in-line and header comments are included and clearly explain the what the code accomplishes and how
  • white space is used well
  • most naming conventions are followed
  • some comments are confusing or missing
  • white space is used well in most places
  • poor or no use of naming conventions
  • too few or too many comments are used and they are unclear or inaccurate
  • poor use of white space
Adaptable & Reusable
(The program is modular, using abstraction well and any limitations are clearly specified.)
  • all interfaces between objects are clear
  • appropriate utility functions are used and well-documented
  • most code can be reused
  • most object interfaces are clear
  • some appropriate utility functions are used and documented
  • some code can be reused
  • poor object interface definitions
  • few or no utility functions
  • no code can be reused
Robust & Correct
(The program provides the correct output for all possible input.)
  • the program works completely as expected
  • the output is displayed to specification for all valid input
  • the program responds appropriately for all invalid input
  • the program works as expected for most input
  • there may be minor errors in output formatting for valid input
  • not all invalid input is handled reasonably
  • the program does not produce correct output for even the sample input
  • the program fails to handle invalid input
  • exceptions are not caught
Efficient & Elegant
(The program uses both time and space on the computer effectively, without losing source code clarity.)
  • no extra variables or definitions are used
  • the code is small, efficient yet still easily understood
  • extra variables do not make the code harder to understand
  • brute-force problem solving approach
  • extra variables are pervasive and confusing
  • the code is unnecessarily long and patched together
  25-20% 19-11% 10-0%

Jessie Alperin <>, Ghada Bakbouk <>, Preston Basting <>, Miku Fukuyama <>,,, Elizabeth Iduma <>,,, Tess Neau <>,, Daniel Olivieri <>,, Joseph Schutz <>,,,,, John Wilhelm <>, Yanqi Xu <>

Topic attachments
I Attachment History Action Size Date Who Comment
JPEGjpg CodeComplete.jpg r1 manage 41.2 K 2017-08-24 - 13:27 JimSkon  
PDFpdf visap2015_Cruz_WrongfullyRight.pdf r1 manage 6266.7 K 2017-10-31 - 02:20 JimSkon  
Edit | Attach | Watch | Print version | History: r25 < r24 < r23 < r22 < r21 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r22 - 2017-11-08 - JimSkon
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback