SCMP 318 Software Development S23

James Skon, Hayes 310, 740-427-5369

Department of Mathematics and Statistics

Room: Hayes 215

Office: Chalmer 428
Time: 1:10-2:30, Days: T,TH

Office hours:

Please sign up for an appointment here: Link
Walk-ins are welcome, but people with appointments are given priority.

  • Tuesday & Thursday 9-12, In person. Chalmers 428. Sign up
  • Virtual: Monday & Wednesday 9-1: Request virtual appointment: Sign up

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%Due by MIdnight. 10% penalty for up top 24 hours late, then 50% off.
Quizzes15%Must be taken in class. Cannot be taken later without a note from either the provost office or the dean of students (Professor Hawks).
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%

Class server

This call will use a server at: http://3.134.78.249/.
Change Database root password:
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘KenyonToday!’;

Technical Topics

  • Using the Linux Server
  • C++ Iterators and algorithms
  • Client/Server architectures
  • RESTful Microservices
  • JavaScript, HTML and CSS
  • Bootstrap
  • SQL
  • SQL and C++

DateTopicReading/InfoQuizSlidesAssignment Due
Jan 17Course Intro
Software Construction
Construction
Chapter 1
Intro
Software Construction
Jan 19AWS Linux ServerAWS Linux getting started
HW 1- AWS Linux Server
Student Information
Jan 24Linux
First Program
nano
SSH
SSH
linux command summary
Setting up SSH for remote access
SSH Setup
BBEdit
Notepad++ (Remote Edit)
Visual Studio Code (Remote Edit)
Quiz 1 (Linux Commands)Linux
Jan 26Linux Programming
Software Metaphors
Git, Github
C++ build setup
Chapter 2
namesCpp
namePy
UML Class Diagram
Google Diagrams
UML How To
Quiz 2Metaphors
Git and GitHub
HW 1- AWS Linux Server
HW 2 – Linux Command Line
Jan 31C++ build setup
Names Program Code Review
shakeCpp
shakePy
Review Code
GitHub demo
HW 3 – SSH Setup, remote editing and file transfer
Feb 2 Software Prerequisites
Makefiles
Chapter 3
Make Tutorial
Quiz 3Chapter 3
Make Files
HW 4 – Create GitHub account, create project
Feb 7Setup Apache2 Webserver
Key Construction Decisions
Chapter 4
Introduction to web programming
Review web code from sample projects
Quiz 4Chapter 4HW 5 – Console Programs on Linux
Feb 9HTML, CSS, Rest APIHTML Tutorial
CSS Tutorial
Review Programs
gutJS GitHub
Quiz 5Project GutenbergHW 6 – Shakespeare and Names program running on web server
Feb 13Design in Construction
Bootstrap 5
Chapter 5.1-5.3
Bootstrap Tutorial
Bootstrap ModalBootstrap Modal
Review Programs
Quiz 6
Feb 15Design in Construction
Javascript
Javascript Tutorial
Chapter 5.4-5.6
Review Programs
Chat App
JavaScript Course
Quiz 7HW 7 – Web Page
Feb 21
Working Classes
Javascript
Review Code
Chapter 6
Javascript Games
Word Games
Wordle
Chat app C++
Chat app Python
Quiz 8Working Classes
Feb 23MarieSQL
Install
phpmyadmin
Review Code
Simple Chart Example
phpmyadmin Tutorial
Install MarieDB
Install phpmyadmin
Intro SQL
SQL
HW 8 – Chat App on server
Feb 28High-quality Routines
SQL Activity
Contact App (SQL)
phpmyadmin install
JavaScript Course
Chapter 7
Contact App
Quiz 9High-quality Routines
Mar 2SQL – video course. Not in-class meeting.
Video Class – View SQL course: LinkHW 9 – SQL Course
Lab 1 – Solar data display
Mar 4-19SPRING BREAK
Mar 21Defensive Programming
SQL with C++ and Python
Contact App Code C++
Contact App Code Python
Quiz 10Defensive Programming
Mar 23Art Gallery MeetingArt and emotionsHW 10 – Contact App on server
Mar 28Collaborative Programming
Chat Program reveiw
Chapter 21Quiz 11Collaborative Programming
Mar 30General Issues with Variables
Chapter 10
Contact App Code C++
Contact App Code Python
Change Style Example
Variables
Apr 4Variable Names
Database Design
Art Project Ideas
Chapter 10&11Quiz 12Variable Names
Variables
Lab 2 – Chat program with improvements
HW 11 – Art Project Ideas
Apr 6Organizing Straight-Line Code.
Team formations
Chapter 14
pizzalist Simple Database with C++ example
Lab 2 – Chat program with improvements
Lab 4 – Gallary Project Proposal
Apr 11Using Conditionals.
Chat Program demo and code review.
Chapter 15 ConditionalsLab 4 – Team Assignments
Apr 13Controlling Loops
Team Meeting
Chapter 16
wordFloat (github)
Generate Token
Quiz 13LoopsHW 12 – Updated Contact Program
Lab 4 – Gallary Project Conceptual Design
Apr 18The Software-Quality Landscape.Chapter 20Quiz 14Software Quality LandscapeLab 3 – Chat Program with Database
Lab 4 – User interface Prototype
Apr 20Meet with Jody Kovach in Art Gallery.Lab 4 – System design
Apr 25Developer Testing
Prototype Demo
Chapter 22Quiz 15Developer TestingLab 4 – Prototype
Apr 27DebuggingChapter 23Quiz 16Debugging
May 2 RefactoringChapter 24Quiz 17RefactoringLab 4 – Complete
May 4Personal Character .Chapter 33Quiz 18Personal Character
Monday, May 8 at 6:30 p.m.Lab 4 PresentationsLab 4 Presentations
Lab 4 Personal Reflection

View Page

Project Grading Rubric

View Page

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

Tools

cslab.kenyon.edu links

Languages/Libraries

Tutorials/Reference

Links

Schedule

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