Tags:
create new tag
view all tags

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

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  

Tools

calab.kenyon.edu links

Languages/Libraries

Tutorials/Reference

Links

Schedule

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
PuTTY
Project 0
  1._Software_Construction.ppt
Introduction-to-Linux.pptx
 
01-18 Software Metaphors
Name Data Demo

Chapter 2
Notepad++

HTTP & CSS

Link 2._Metaphors.ppt Linux Slides  
01-20 Preparation 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
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 , The Make Command
The Demo code for Name program
The English stemmer example.
C++ Web Programming

Ajax Tutorial for Beginners

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 - View for quiz
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, MathML, Shakespeare, Bible, Quran   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++, 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
/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

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%
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

Topic attachments
I Attachment History Action Size Date Who Comment
PowerPointppt 1._Software_Construction.ppt r2 r1 manage 684.0 K 2017-01-23 - 15:19 JimSkon  
PowerPointppt 10.Variables.ppt r2 r1 manage 899.0 K 2017-02-05 - 15:44 JimSkon  
PowerPointppt 11.Variables.ppt r2 r1 manage 405.5 K 2017-02-05 - 15:44 JimSkon  
PowerPointppt 12.FundDataTypes.ppt r1 manage 189.0 K 2016-12-19 - 02:16 JimSkon  
PowerPointpptx 13.UnusualDataTypes.pptx r1 manage 337.0 K 2016-12-19 - 02:16 JimSkon  
PowerPointppt 14.OrganizingStraight-lineCode.ppt r1 manage 131.5 K 2016-12-19 - 02:16 JimSkon  
PowerPointpptx 14.OrganizingStraight-lineCode.pptx r1 manage 145.6 K 2016-12-19 - 02:16 JimSkon  
PowerPointppt 15.UsingConditionals.ppt r2 r1 manage 148.5 K 2017-04-21 - 14:46 JimSkon  
PowerPointppt 16.ControllingLoops.ppt r2 r1 manage 284.0 K 2017-04-21 - 14:47 JimSkon  
PowerPointppt 17.UnusualControlStructures.ppt r2 r1 manage 528.0 K 2017-04-21 - 15:01 JimSkon  
PowerPointppt 18.Table-DrivenMethods.ppt r2 r1 manage 387.5 K 2017-04-21 - 15:04 JimSkon  
PowerPointppt 19.GeneralControlIssues.ppt r1 manage 688.5 K 2016-12-19 - 02:17 JimSkon  
PowerPointppt 2._Metaphors.ppt r3 r2 r1 manage 1867.5 K 2017-01-23 - 15:19 JimSkon  
PowerPointppt 21.Collaboration.ppt r1 manage 226.0 K 2017-02-03 - 16:15 JimSkon  
PowerPointppt 22.DeveloperTesting.ppt r1 manage 1008.5 K 2017-05-03 - 15:25 JimSkon  
PowerPointppt 3._Preparation.ppt r2 r1 manage 2151.0 K 2017-01-23 - 15:19 JimSkon  
PowerPointppt 33.PersonalCharacter.ppt r1 manage 132.0 K 2017-04-21 - 15:22 JimSkon  
PowerPointppt 4._KeyConstructionDecisions.ppt r2 r1 manage 180.0 K 2017-01-23 - 16:10 JimSkon  
PowerPointppt 5._DesigninConstruction.ppt r2 r1 manage 753.0 K 2017-01-23 - 16:10 JimSkon  
PowerPointppt 6._WorkingClass.ppt r3 r2 r1 manage 966.5 K 2017-02-16 - 20:29 JimSkon  
PowerPointppt 7._High-QualityRoutines.ppt r3 r2 r1 manage 676.5 K 2017-02-16 - 21:15 JimSkon  
PowerPointppt 8._DefensiveProgramming.ppt r2 r1 manage 756.0 K 2017-02-05 - 15:44 JimSkon  
PowerPointppt 9.PseudocodeProcess.ppt r2 r1 manage 596.0 K 2017-02-05 - 15:44 JimSkon  
PowerPointpptx CGI-AJAX.pptx r1 manage 1107.4 K 2017-02-03 - 16:27 JimSkon  
JPEGjpg CodeComplete.jpg r1 manage 41.2 K 2017-01-16 - 18:16 JimSkon  
PowerPointpptx Introduction-to-Linux.pptx r2 r1 manage 2295.0 K 2017-01-16 - 00:26 JimSkon  
PowerPointpptx IntroductionToGIT.pptx r1 manage 503.5 K 2017-02-03 - 16:39 JimSkon  
PowerPointppt Makefile-C.ppt r1 manage 399.5 K 2017-01-23 - 17:13 JimSkon  
PowerPointppt RecordFieldsBinaryIO.ppt r1 manage 749.0 K 2017-04-26 - 17:03 JimSkon  
PowerPointppt UserInterfaceDesign.ppt r1 manage 359.5 K 2017-02-05 - 15:24 JimSkon  
Edit | Attach | Watch | Print version | History: r90 < r89 < r88 < r87 < r86 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r90 - 2017-11-01 - JimSkon
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2018 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback