SCMP 318.0X Software Development F20

James Skon, Hayes 310, 740-427-5369

Department of Mathematics and Statistics

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

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.

Text

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

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
Homework20%
Quizzes15%
Individual Projects45%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 Project20%Similar grading as above. All members are typically given the same grade unless there is evidence of certain team mambers.
TOTAL100%

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

Tools

cslab.kenyon.edu links

Languages/Libraries

Tutorials/Reference

Links

Schedule


Date
TopicReading/InfoQuizSlides
Video
Assignment Due
Aug 31Course Intro
Software Construction
Chapter 1Software Construction
Video
Student Information
Sept 2Introduction to Linux and VM’sAzure Free Server
Azure Server Setup Tutorial
Linux VM Setup
Setup Video (Watch before class)
Windows SSH
PuTTY
Mac OS SSH
linux command summary
Linux
Sept 4LinuxWatch: Linux Terminal 1, 2, 3
Read: Linux for beginners
QuizLinuxVM setup
Sept 7Console Programming Ubuntu EnviornmentC++ Install
Python Install
Atom
Ftp-remote-edit
Linux HW
Sept 9Software Metaphors
Inverted Index
Chapter 2 – Software Metaphors
Text Search code
C++ github
Python githb
Map STL c++
QuizMetaphors
VM working with C++ or Python
Sept 11Make FilesMake Files
Make Tutorial
QuizMake FilesHW – Your console program on Linux.
Sept 14Name and Text Search Programs Operation, InstallationName data code
C++ and Python github
Sorted Indexes
Name Data Files– From US Census Data
Map STL c++
Sept 16Project 1 OverviewChapter 3.1-3.3 – Software Prerequisites
Project 1
Using LucidChart for object oriented design. LucidChart
QuizChapter 3HW – Console Programs on Linux
Sept 18Project PreparationChapter 3.4-3.6 – More Prerequisites
C++ parsing CSV lines: String, Int
QuizProject 1 Object Oriented Design HW
Sept 21NameDemo
Web Code Overview

NamesDemo C++
NamesDemo Python
C++ Github

NameLookup
Python GitHub
NameLookup

Sept 23Key Construction Decisions
Design in Construction
More review of Web Code
Chapter 4 – Key Construction DecisionsQuizChapter 4
Sept 25HTML, CSSHTML Tutorial
CSS Tutorial
QuizHTML&CSSProject 1, Part 1
Sept 28Project 1 – part 2 Overview
BootStrap
Bootstrap, BootStrap Course, BootStrap TutorialBootstrapHW – Web Name Program on server
Sept 30Web page communicationAjax Tutorial for Beginners
CGI and AJAX
C++ Web Programming
CGI and AJAX
Class Video
Oct 2Javascript and JQuery.Javascript Tutorial,JQuery Tutorial,Learn JQuery,JavaScript & jQuery TutorialsQuizVideo to watch on Ajax
jQuery
Ja
vaScript
Oct 5Chapter 5.1-5.3Chapter 5 – Design in ConstructionQuizChapter 5HTML, CSS, Bootstrap
Oct 7Project 1, Part 3:Client/Server Web MarvelFifo’s for communication, Stateless server
Name Server Client/Server:
C++, C++ Github, Python, Python Github
QuizJavaScript
jQuery
Javascript and jQuery HW

Oct 9Chapter 5.4-5.36

Client/Server Code review
Project 1, Part 2
Oct 12Introduction to XMLXML Introduction, XML Tutorial– Review up to XML Attributes section before class for quiz.QuizXML Overview
Introduction XML Part 1

Introduction XML Part 2
Introduction XML Part 3
HW – Client Server Name Program on Web
Oct 14Project 2: ZorkProject 2: XML ProjectInheritance in JavaScript
Oct 16XML LookupTutorial: Parsing XML with JQuery
Watch: Reading XML File with jQuery 1 & 2
MathML, Shakespeare
XML Parser for C++ , Documentation
Project 1, Part 3
Oct 19User Interface DesignUser Interface Design Basics
Principles of User Interface Design
User Interface Design Tips, Techniques, and Principles
Interface Hall of Shame
User Interface Design
Video
Oct 21Introduction to Git and GithubGIT Video– View for quiz , GitHub for beginnersQuizIntroduction to git and github
Oct 23Working ClassesCh 6QuizWorking ClassesProject 2, Design
Oct 26Introduction to SQL
phpmyadmin
MySQL and the World Database
SQL World Database, phpmyadmin, SQLTutorial, phpmyadmin TutorialQuizIntro SQL
SQL
Git HW
Oct 28PhoneApp ReviewPhoneAppC++( GitHub), Python( GitHub)Project 2 – partial operation
Oct 30
Project 3 Overview

Project 3
Class VideoSQL HW 1- phpmyadmin
Nov 2High-quality Routines
Group Formation
Ch 7QuizHigh-quality Routines
Class Video
MySQL HW 2
PhoneApp
Nov 4Node.jsIntroduction to Node.js
Node with Express (read and review both)
Rest Interfaces
Favicon GeneratorREST API
JSON
Class Video
Project 3 Team Proposal
Nov 6Adventure Demos Project 3 TeamsProject 2, Complete
Nov 9Node.js and Express
PhoneApp
Introduction to Node.js
Node.js and Express
PhoneNodeREST, github, socketChat, github
Node.js
Socket.io
Socket.io tutorial
Class Video
Project 3: Conceptual Design proposal
Nov 11 Defensive Programming
PhoneApp
Ch 8QuizDefensive Programming
Class Video
Set up apps with node.js
Node JS ports
Nov 13Collaborative ProgrammingCh 21QuizCollaborative Programming
Class Video
Project 3 UI Design
Nov 16UI PresentationsClass VideoProject 3 Software Design
Nov 18General Issues with Variables
Variable Names
Chapter 10, 11
PhoneBook program using socket.io
QuizVariables
Variable Names
Node.js updated App
Nov 20

Debugging

Chapter 23
Bootstrap Tutorial
Bootstrap Modal, Bootstrap Modal
QuizDebugging
Class Video
Project 3: Prototype 1
Presentation of project status
Nov 23Personal CharacterChapter 33QuizPersonal Character
Class Video
Nov 30DemonstrationsDemos of partially working solutionSlides
Dec 2Code ReviewsCode Review InstructionsCookie ExampleProject 3: Code review
Dec 4The Software-Quality LandscapeChapter 20QuizThe Software-Quality Landscape
Class Video
Project 3: Prototype 2
Dec 7Developer TestingChapter 22QuizDeveloper Testing
Class Video
Dec 9RefactoringChapter 24QuizRefactoring
Class Video
Final Project Complete
Dec 14Final presentation
8:30-11:30 am
Project 3 full presentationEvaluation FormSystem Presentation and Demo
Personal Statement

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

Team Demo Rubric

RequirementCommentsPointsScore
Meets Functional Expectations40
Presentation Organization30
Preparation – Team is prepared with examples30
Total100

Non Discrimination Statement

Kenyon College does not discriminate in its educational programs and activities on the basis of race, color, national origin, ancestry, sex, gender, gender identity, gender expression, sexual orientation, disability, age, religion, medical condition, veteran status, marital status, genetic information, or any other characteristic protected by institutional policy or state, local, or federal law. The requirement of non-discrimination in educational programs and activities extends to employment and admission.

All employees, including faculty, are considered Responsible Employees and must notify the College’s Civil Rights & Title IX Coordinator with any relevant information.

For further information, please refer to the following Kenyon College policies:

Sexual Misconduct & Harassment: Title IX, VAWA, Title VII:
Pythonps://www.kenyon.edu/directories/offices-services/ocr/title-ix-vawa/kenyon-policies/title-ix-policy/

Discrimination & Discriminatory Harassment Policy (non sex or gender):
Pythonps://www.kenyon.edu/directories/offices-services/ocr/discrimination/

ADA & Section 504:
Pythonps://www.kenyon.edu/directories/offices-services/ocr/discrimination/504-ada-grievance/student-grievance-procedure-resolving-complaints-under-ada-section-504/

Disabilities

If you have any disability and therefore may have need for some type of accommodation in order to participate fully in this class, please feel free to discuss your concerns in private with Erin Salva, director of Student Accessibility and Support Services (SASS). (phone: (740) 427-5453).

Statement on Title IX

Kenyon College does not discriminate in its educational programs and activities on the basis of race, color, national origin, ancestry, sex, gender, gender identity, gender expression, sexual orientation, disability, age, religion, medical condition, veteran status, marital status, genetic information, or any other characteristic protected by institutional policy or state, local, or federal law. The requirement of non-discrimination in educational programs and activities extends to employment and admission.

All employees, including faculty, are considered Responsible Employees and must notify the College’s Civil Rights & Title IX Coordinator with any relevant information.

For further information, please refer to the following Kenyon College policies:

Sexual Misconduct & Harassment: Title IX, VAWA, Title VII:

https://www.kenyon.edu/directories/offices-services/ocr/title-ix-vawa/kenyon-policies/title-ix-policy/

Discrimination & Discriminatory Harassment Policy (non sex or gender):

https://www.kenyon.edu/directories/offices-services/ocr/discrimination/

ADA & Section 504:

https://www.kenyon.edu/directories/offices-services/ocr/discrimination/504-ada-grievance/student-grievance-procedure-resolving-complaints-under-ada-section-504/

Scroll to Top