Tags: %TAGME{ tpaction="" web="Main" tag="" }% view all tags

SCMP318 Software Development

James Skon
Fall 2020
Location: Online, Time: 10:10, Days: MWF, Zoom Link ( Full invitation) Password: SoftDev
Office hours: MW 1-3, F 8-10, TH 2:30-3:30, Zoom Link
  • Alternate: Google Meet Link. If the zoom meeting doesn't work, or fails during class, we will shift to the Gooogle meet to do the class.

  • If a class link breaks or stops working, please check your email immediately. IF you don;t see anything, send me an email ASAP and let me know what is going on.

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. Create and set up virtual machince running Linux in the cloud (Azure)
  9. Be capable of creating and using a MySQL database using SQL and phpmysql.
  10. Write JavaScript code using HTML, CSS and jQuery.
  11. Be able to create an HTML and JavaScript front end that communicate with a C++ program through an Apache2 web server.
  12. Design and develop web based data visualization components and user interfaces that use quality metaphoric concepts.
  13. Be able to produce JavaScript and/or C++ effectively processes XML documents.

<a name="Text"> </a>Text

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


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.)

Homework 20
Quizzes 15
Individual Projects 45 Due 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 Project 20 Similar grading as above. All members are typically given the same grade unless there is evidence of certain team mambers.

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
  • AJAX and CGI communication
  • XML Processing
  • JQuery
  • SQL
  • SQL and C++
  • Set Up a Node.js App



cslab.kenyon.edu 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.


Date Topic Reading/Info Quiz Slides
Assignment Due
Aug 31 Course Intro
Software Construction
Chapter 1   Software Construction
Student Information
Sept 2 Introduction to Linux and VM's Azure Free Server
Azure Server Setup Tutorial
Linux VM Setup
Setup Video (Watch before class)
Windows SSH
linux command summary
Sept 4 Linux Watch: Linux Terminal 1, 2, 3
Read: Linux for beginners
Quiz Linux VM setup
Sept 7 Console Programming Ubuntu Enviornment C++ Install
Python Install
    Linux HW
Sept 9 Software Metaphors
Inverted Index
Chapter 2 - Software Metaphors
Text Search code
C++ github
Python githb
Map STL c++
Quiz Metaphors
VM working with C++ or Python
Sept 11 Make Files Make Files
Make Tutorial
Quiz Make Files HW - Your console program on Linux.
Sept 14 Name and Text Search Programs Operation, Installation Name data code
C++ and Python github
Sorted Indexes
Name Data Files- From US Census Data
Map STL c++
Sept 16 Project 1 Overview Chapter 3.1-3.3 - Software Prerequisites
Project 1
Using LucidChart for object oriented design. LucidChart
Quiz Chapter 3 HW - Console Programs on Linux
Sept 18 Project Preparation Chapter 3.4-3.6 - More Prerequisites
C++ parsing CSV lines: String, Int
Quiz   Project 1 Object Oriented Design HW
Sept 21 NameDemo Web Code Overview

NamesDemo C++
NamesDemo Python
C++ Github

Python GitHub

Sept 23 Key Construction Decisions
Design in Construction
More review of Web Code
Chapter 4 - Key Construction Decisions Quiz Chapter 4  
Sept 25 HTML, CSS HTML Tutorial
CSS Tutorial
Quiz HTML&CSS Project 1, Part 1
Sept 28 Project 1 - part 2 Overview
Bootstrap, BootStrap Course, BootStrap Tutorial   Bootstrap HW - Web Name Program on server
Sept 30 Web page communication Ajax Tutorial for Beginners
C++ Web Programming
  CGI and AJAX HTML, CSS, Bootstrap
Oct 2 Javascript and JQuery. Javascript Tutorial , JQuery Tutorial , Learn JQuery , JavaScript & jQuery Tutorials Quiz JavaScript
Video to watch on Ajax
JavaScript & jQuery
Oct 5 Chapter 5.1-5.3 Chapter 5 - Design in Construction Quiz Chapter 5 Bootstrap
HW - Client Server Name Program on Web
Oct 7 Project 1, Part 3: Client/Server Web Marvel Fifo's for communication, Stateless server
Name Server Client/Server:
C++, C++ Github, Python, Python Github
    Project 1, Part 2
Oct 9 Client/Server Code review        
Oct 12 Introduction to XML XML Introduction , XML Tutorial - Review up to XML Attributes section before class for quiz. Quiz XML Overview
Introduction XML Part 1

Introduction XML Part 2
Introduction XML Part 3
Oct 14 Project 2: Zork Project 2: XML Project      
Oct 16 XML Lookup Tutorial: Parsing XML with JQuery
Watch: Reading XML File with jQuery 1 & 2
MathML , Shakespeare , Bible , Quran
XML Parser for C++ , Documentation
Demo Software: /home/class/SoftDev/cppXMLAJAX/
Quiz   Project 1, Part 3
Oct 19 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      
Oct 21 Introduction to Git and Github GIT Video - View for quiz , GitHub for beginners
Quiz GitHub.pdf
Introduction to git and github
Project 2, Design
Oct 23
Group Work Zork
Oct 26 Working Classes Ch 6 Quiz Working Classes Project 2 - partial operation
Oct 28 Midterm Exam - Study Guide Chapters 1-6, User Interface Design, GIT      
Oct 30 High-quality Routines
Project 3 Overview
Ch 7
Project 3
Quiz High-quality Routines  
Nov 2 PhoneApp Review PhoneApp - C++ ( GitHub), Python ( GitHub)      
Nov 4 Adventure Demos       Project 2, Complete
Nov 6 Project 3 Overview
PhoneApp Review
Project 3
PhoneApp - C++ ( GitHub), Python ( GitHub)
Nov 9 Introduction to SQL
phpmyadmin<a href="https://cs.kenyon.edu/do/edit/Main/MySQL?topicparent=Main.SoftDevel2019;nowysiwyg=0" rel="nofollow" title="MySQL (this topic does not yet exist; you can create it)">
MySQL</a> and the World Database
SQL World Database, phpmyadmin, SQLTutorial, phpmyadmin Tutorial Quiz Intro SQL
Install mySQL
Nov 11 Node.js Introduction to Node.js (read and review) Quiz Node.js Install and try Node.js
Project 3 Team Proposal
Nov 13 PhoneApp PhoneApp - C++ ( GitHub), Python (GitHub)     SQL HW
Nov 16 Defensive Programming Ch 8 Quiz Defensive Programming Project 3 UI Design
PhoneApp running on server
Nov 18 Collaborative Programming Ch 21 Quiz Collaborative Programming SQL HW 2- phpmyadmin
PhoneApp running with additions
Nov 23

Project 3 Team Meeting,


      Presentation of project status
Nov 23 General Issues with Variables
Variable Names
Chapter 10, 11 Quiz Variables
Variable Names
Nov 30 Demonstrations Demos of partially working solution     Demonstration, Prototype
Dec 2 Code Reviews       Code review code
Dec 4 Personal Character Chapter 33 Quiz Personal Character  
Dec 7 The Software-Quality Landscape Chapter 20   The Software-Quality Landscape  
Dec 9 Developer Testing Chapter 22 Quiz Chapter 22 Funal Project Complete
  Final Project 3 full presentation   Evaluation Form Final Presentation
Personal Statement
<a name="Software_project_grading_rubric"></a>Software project grading rubric

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%
Edit | Attach | Watch | Print version | History: r41 < r40 < r39 < r38 < r37 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r41 - 2020-09-24 - JimSkon
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback