SCMP 391.00 Special Topic: Software Development

James Skon
Spring 2017
Location: Hayes 311, Time: 1:10-2:00, Days: MWF
Office Hours: 10-11 M-F.
Tutoring: Sundays 7:00-9:00 pm, Hayes 303, outer office (Bring laptop)
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)

Overview

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.

Text

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

Technical Topics

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

Projects

TypeProjectConceptsDemo
IndividualInverted index for Shakespearehashmap, structuresCensus Name Data index and lookup
IndividualWeb Version of word index for Shakespeareinverted indexWeb based Census Name Data
GroupText Chat or Tick Tack ToefifoMessage sending Program
GroupEnhanced Threaded Text Chat or Tick Tack ToeThreadsThread demo
GroupWeb Text Chat or Tick Tack ToeIntegration of previous featuresNone
IndividualText Display of Shakespeare from XML in c++XML with c++Bible XML Lookup
IndividualWeb Display of Shakespeare from XMLXL with Javascript and c++Bible XML display in browser
GroupFull Word Index Project GutenbergCreate new index designsequential search
GroupProject Gutenberg Word Web lookupUser Interface design 
GroupProject Gutenberg Author and Subject InterfaceParsing of HTML, creation of index 
GroupProject Gutenberg multi threaded for performanceUser threaded sessions 

Tools

calab.kenyon.edu links

Languages/Libraries

Tutorials/Reference

Links

Schedule

DateTopicReading / InfoQuizSlidesAssignment Due
01-16Software Construction
Project 0: Programming in the Linux environment
Chapter 1
Census Name Information Demo
Linux Introduction
Emacs Cheat Sheet
VIM Check Sheet
 PuTTY
Project 0
 1._Software_Construction.ppt
Introduction-to-Linux.pptx
 
01-18Software Metaphors
Name Data Demo
Chapter 2
Notepad++HTTP & CSS
Link2._Metaphors.ppt Linux Slides 
01-20Preparation for coding, Inverted Index
Project 1: Shakespeare Index
Chapter 3, Map STL c++
 namesdemo.cpp
Web Names Lookup
 Name Data Files – From US Census Data
LinkChapter 3 
01-23Key Construction Decisions
HTML
Chapter 4, HTML Tutorial
Project 1 Review
LinkChapter 4Project 0
01-25Design in Construction
Make Files
Chapter 5
Make FilesThe Make Command
LinkChapter 5 Make Files
01-27Project 2: 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
LinkCGI and AJAXHTTP & CSS
01-30Design in Construction
Javascript
Chapter 5
Make Files
CGI and AJAX
 Chapter 5 
02-1Project 2 Overview    
02-3Collaborative Construction
Group Formation
Chapter 21
Questioneer
LinkChapter 21 CGI and AJAXProject 1
02-6User 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-8Group Project 3: Web Chat or Tick Tack Toe
User Interface and Program Design Brainstorming
LucidChart   
02-10Project 2 discussion    
02-13Introduction to GITHubGIT Video – View for quiz
GIT HW
LinkGIT SlidesProject 3 UI design
02-15Group Work – Architecture and Protocol DesignProtocol Oveview
GIT HW
  Project 2
02-17Working ClassesChapter 6LinkChapter 6GIT HW
Project 3 Arch Design
02-20Demonstration of GIT and creating a program that actively updates a list of processes.    
02-22Demo Project 3 risk mitigation milestone.
Group Work
 –
Teams will explain and demonstrate work done to mitigate risks.  Project 3 Risk Mitigation
02-24High-Quality RoutinesChapter 7Link7._High-QualityRoutines.ppt 
02-27Defensive ProgrammingChapter 8Link8._DefensiveProgramming.ppt 
03-1Demo complete project 3. Group work – Project 4. Brain Storm Features.   Project 3
03-3Midterm Exam – Study GuideChapters 1-8,21, User Interface Design, GITLink  
03-4 – 03-19Spring Break    
03-20Project 4 Overview, Team meetingsProject 4Schedule Meeting   
03-22General Issues in Using VariablesChapter 10link10.Variables.ppt 
03-24The Power of Variable NamesChapter 11link11.Variables.pptProject 4-1
03-27Team work on project 4-2 and 4-3Split into teams in class  Project 4-2
03-29Introduction to XMLXML IntroductionMathMLShakespeareBibleQuran XML OverviewProject 4-3
03-31Project 5: XML ProjectProject 5 – Individual Project Bible Example 
04-03Project 5: XML Project, continuedProject 5 – Individual Project Bible Example 
04-05Project 4 presentationBe prepared to make a 6 minute well prepared presentation with demonstration. All team members should participate.  Project 4-4
Project 5 Proposal
04-07Project 4 presentation ContinueBe prepared to make a 6 minute well prepared presentation with demonstration. All team members should participate.   
04-10Multi-threaded Coding, timers, Drop downs.POSIX Threads Programming   
04-12Project 5 Work and informationTutorial: Parsing XML with JQuery   
04-14Project 5 Work and informationXML Parser for C++Documentation
Demo Software: /home/class/SoftDev/cppXMLAJAX/
   
04-17Project 6: Massive Word SearchDemo Program
Demo Software: /home/class/SoftDev/SearchBooks
Project 6
   
04-19Project 5 PresentationsBe prepared to demonstrate and talk about your project  Project 5 Complete
04-21Using ConditionalsChapter 15 Chapter 15 
04-24Controlling LoopsChapter 16 Chapter 16Project 5 Design
04-26Binary IOGood Reference: Link
/home/class/SoftDev/binaryFiles
 RecordFieldsBinaryIO.pptProject 6 – Algorithm Design
04-28Unusual Control Structures, Table-Driven MethodsChapter 17, 18 Chapter 17
Chapter 18
Project 6 – Code proving design
05-1Personal CharacterChapter 33 Chapter 33 
05-3The Software-Quality LandscapeChapter 20 Chapter 20Project 6 – Complete System
05-5Developer TestingChapter 22 Chapter 22 
05-96:30-9:30pmFinal Presentation Project 6 Evaluation FormMoodle Link for Final Presentation
Moodle Link Complete Project

Software project grading rubric

CriteriaExcellentAcceptableUnacceptable
Documented & Maintainable
(The program is well-documented with appropriate names and comments making it easy to understand.)
all naming conventions are followedboth in-line and header comments are included and clearly explain the what the code accomplishes and howwhite space is used wellmost naming conventions are followedsome comments are confusing or missingwhite space is used well in most placespoor or no use of naming conventionstoo few or too many comments are used and they are unclear or inaccuratepoor use of white space
Adaptable & Reusable
(The program is modular, using abstraction well and any limitations are clearly specified.)
all interfaces between objects are clearappropriate utility functions are used and well-documentedmost code can be reusedmost object interfaces are clearsome appropriate utility functions are used and documentedsome code can be reusedpoor object interface definitionsfew or no utility functionsno code can be reused
Robust & Correct
(The program provides the correct output for all possible input.)
the program works completely as expectedthe output is displayed to specification for all valid inputthe program responds appropriately for all invalid inputthe program works as expected for most inputthere may be minor errors in output formatting for valid inputnot all invalid input is handled reasonablythe program does not produce correct output for even the sample inputthe program fails to handle invalid inputexceptions 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 usedthe code is small, efficient yet still easily understoodextra variables do not make the code harder to understandbrute-force problem solving approachextra variables are pervasive and confusingthe code is unnecessarily long and patched together
 25-20%19-11%10-0%

Email: 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

Scroll to Top