SCMP318 Software Development

James Skon
Fall 2019
Location: Hayes 310, Time: 11:10, Days: MWF
Office hours: 2-3 Mon & Wed, 3-4 Tues & Thurs, 10-11 Fri
Tutoring:
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)

Course Learning Outcomes

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 direct file I/O, inner-process and inter-system communication, multi-threading, and the synchronization of shared resources, web interfaces, data visualization and working with large data sets. For two projects students will work in project teams. Students will primarily use C++, but also will learn Javascript and other languages as needed. Prerequisite: SCMP 118 or permission of instructor.

Course Outcomes

At the completion of this course the students should

  1. Exhibit best practices in creating code that is well structured and organized using object-oriented concepts.
  2. Exhibit an understanding of quality use of identifier naming within code.
  3. Be capable of providing appropriate internal documentation within code.
  4. Understand and utilize proper use of internal barricading and error checking of values within a program.
  5. Be capable of creating detailed requirement for a problem bending solved.
  6. Be capable of creating architectural designs for multi-component software systems.
  7. Be capable of collaboration in software development including pair-programming, peer design and code reviews.
  8. Be capable of creating and using a MySQL database using SQL and phpmysql.
  9. Write JavaScript code using HTML, CSS and jQuery.
  10. Be able to create an HTML and JavaScript front end that communicate with a C++ program through an Apache2 web server.
  11. Design and develop web based data visualization components and user interfaces that use quality metaphoric concepts.
  12. Be able to produce JavaScript and/or C++ effectively processes XML documents.

Text

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

Grading

Due Date: All assignments are due as specified in the grading table below.

Missing Lab Assignments: Labs are an important part of this class; the effort spent on them is a crucial part of the learning process. Failure to submit labs is unacceptable: students earning 0s on two labs cannot receive a grade higher than a B- for the course; students earning three 0s on labs will receive an automatic F for the course.

Collaboration and Academic Honesty: In order to facilitate learning, students are encouraged to discuss assignments amongst themselves. Copying a solution is not, however, the same as “discussing.” A good rule of thumb is the “cup of coffee” rule. After discussing a problem, you should not take away any written record or notes of the discussion. Go have a cup of coffee or cocoa, and read the front page of the newspaper. If you can still re-create the problem solution afterward from memory, then you have learned something, and are not simply copying. (The “group work” are exempt from this, as they are intended to be done together.)

Category%Notes
Homework15Due by class time on day assigned. Not accepted Late
Quizzes10In class, at beginning. Weekly. No makeup without medical note.
Individual Project30Due 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 Project30Similar grading as above. All members are typically given the same grade unless there is evidence of certain team mambers.
Exams15There is a traditional individual midterm, while the final is a public group presentation on the final project.

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++
  • Set Up a Node.js App

Notes

Tools

cslab.kenyon.edu links

Languages/Libraries

Tutorials/Reference

Links

Disability Statement

Kenyon College values diversity and recognizes disability as an aspect of diversity. Our shared goal is to create learning environments that are accessible, equitable, and inclusive. If you anticipate barriers related to the format, requirements, or assessments of this course, you are encouraged first to contact the office of Student Accessibility and Support Services (SASS) by emailing Erin Salva at salvae@kenyon.edu, then to meet with the instructor to discuss accommodation options or adaptations.

Schedule

DateTopicReading / InfoQuizSlidesAssignment Due
Aug 30Software Construction
Project 0: Programming in the Linux environment
Chapter 1
Census Name Information Demo (c++)
 Census Name Demo (python) NamesDemo (C++)
NamesLookup (Python)
Software ConstructionStudent Information
Sept 2Software MetaphorsChapter 2 – Software Metaphors
Linux Introduction
PuTTY
Project 0Atom
Notepad++BBEdit , EMACS
LinkMetaphors
Linux Slides
 linux command summery
Sept 4
Name Data Demo – C++
NamesDemo code (github)
 Web Names Lookup
Class Activity
 Name Data Files – From US Census DataMap STL c++
Sept 6Name Data Demo – C++, PythonChapter 3.1-3.3 – Software Prerequisites
Examine C++ Code
LinkChapter 3Project 0
Sept 9Name Data Demo
Python Code
Chapter 3.4-3.6 – More Prerequisites
Project 1 Review
Link
Sept 11Project Preparation
Inverted Index
Project 1 Review
Requirements Checklist
[[SdProject1][Project 1] Map STL c++
Sept 13Make FilesMake FilesMake TutorialLinkMake FilesProject 1 Object Oriented Design HW
Sept 16
HTML, CSS, CGI, AJAX
NameDemo Web Code
CGI and AJAXCGI and AJAX
Sept 18Project 1, Part 2
NameDemo Web Code Review
C++ Github NameLookup
Python GitHub NameLookup
C++ String Parsing
Sept 20Makefiles
Project 1, Part 2: Simple Web
The Demo code for Name program

C++ Web Programming
Project 1, Part 1
Sept 23Javascript and JQuery.Javascript Tutorial  JQuery Tutorial  Learn JQuery  JavaScript & jQuery TutorialsLinkJavaScript
 jQuery
HTTP & CSS
Video to watch on Ajax

JavaScript & jQuery Tutorials
Sept 25BootstrapBootstrapBootStrap CourseBootStrap TutorialBootstrapJavaScript and JQuery Tutorial Work
Meet with Professor for code review
Sept 27Web Programming with Ajax &
Javascript
Ajax Tutorial for Beginners
CGI and AJAX
Name Data Web Program Linkgithub Link
JavaScript
 jQuery
Sept 30Project 1, Part 3: Client/Server Web MarvelNames with Client/Server
Fifo’s for communication, Stateless server
Chapter 3Bootstrap
Oct 2Key Construction Decisions
Design in Construction
Chapter 4 – Key Construction DecisionsLinkChapter 4
 Chapter 5
Oct 4
Introduction to XML
XML Introduction , XML Tutorial – Review up to XML Attributes section before class for quiz.XML Overview
Introduction XML Part 1

Introduction XML Part 2
Introduction XML Part 3
Project 1, Part 2
Oct 7Project 2: XML LookupChapter 5.1-5.3  Tutorial: Parsing XML with JQuery
 MathML  Shakespeare  Bible  Quran
 XML Parser for C++  Documentation
 Demo Software: /home/class/SoftDev/cppXMLAJAX/
LinkXML C++ Example , Bible C++ LinkOther examples
Oct 9
Processing XML using jQuery
Sample of C++ processing XMLCPP XML Example
XML processing with jQueryXML with bootstrap
XML with BibleGitHub Jquery XMLPython XML ParsingPython XML Example
Design in Programming
Oct 14Project 2
User Interfaces
Project 2: XML Project
User Interface Design Basics

 Principles of User Interface Design
 User Interface Design Tips, Techniques, and Principles
 Interface Hall of Shame
User Interface DesignProject 1, Part 3
Oct 16Introduction to Git and GithubGIT Video – View for quiz , GitHub for beginners
GIT HW
LinkGitHub.pdf
Introduction to git and github
Project 2, Design
Oct 18Working ClassesCh 6Working Classes
Oct 21High-quality RoutinesCh 7LinkHigh-quality Routines
Oct 23Text game DemosDiscussion of solutions.DemoProject 2 – partial operation
Oct 25Defensive ProgrammingCh 8LinkDefensive Programming
Oct 28Collaborative ProgrammingCh 21LinkCollaborative Programming
Oct 30Midterm Exam – Study GuideChapters 1-8, User Interface Design, GITLinkGIT HW
Nov 1Project 3 Overview
PhoneApp Review
Project 3
PhoneApp – C++ ( GitHub), Python ( GitHub)
Project 2, Complete
Nov 4MySQL and the World DatabaseSQL World DatabasephpmyadminSQLTutorialphpmyadmin TutorialIntro SQL
SQL
Project 3 Team Proposal
Nov 6Introduction to SQL, phpmyadmin, node.jsLearn SQLPhone Number App Codeart.sqlPhoneAppLinkPhoneApp Running with your Database 
Nov 8Project 3 Team MeetingC++/MySQL tutorialsSocket.io cheat SheetChat AppChat CodeProjectTeamsProject 3 UI Design
SQL HW 1
Project 2 Code Review Deadline
Nov 11General Issues with VariablesChapter 10LinkVariablesProject 3 Software Design
SQL HW 2- phpmyadmin
Nov 13Variable NamesChapter 11LinkVariable Names
Nov 15Personal CharacterChapter 33Personal Character
Nov 18DemonstrationsProject 3 Prototype 1 – search and view art
Nov 20Code ReviewsCode Review Project 3
Nov 22Automatic updating webpagesChat App  Chat CodeLive Monitoring Processes , code
Dec 2The Software-Quality LandscapeChapter 20LinkThe Software-Quality LandscapeProject 3 Prototype 2
Dec 4Developer TestingChapter 22LinkChapter 22
Dec 6Demos
Dec 9DebuggingChapter 23LinkDebuggingProject 3 Prototype 3
Dec 11RefactoringChapter 24LinkRefactoring Checklist
Refactoring
Dec 13Refactoring PresentationsFinal Review SignupRefactoring Slides
Final Project Complete
Dec 201:30-4:30amFinal Presentation Project 5Evaluation FormFinal Presentation
 Personal Statement

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%
Scroll to Top