COMP 318 Software Development S24

James Skon, Chalmers 428, 740-427-5369

Department of Mathematics and Statistics

Room: Hayes 203

Office: Chalmer 428
Time: 2:30-4:00, 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 8-9, 10-11, In person. Chalmers 428. Sign up
  • Monday & Wednesday 9-11: May be virtual: 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 provides an in-depth exploration of software development methodologies and practices. Students will engage in designing, implementing, testing, and maintaining software applications using contemporary programming languages and tools. Key topics include object-oriented programming, user interface design, full-stack development, version control with GitHub, data visualization, and automated testing. Through collaborative projects and hands-on assignments, learners will develop the skills necessary to build robust, user-friendly applications and effectively work within development teams. Prerequisites include introductory programming courses or equivalent experience. 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 (AWS)
  9. Learn Ruby and Ruby on Rails to develop Full Stack applications
  10. Be capable of creating and using a database using SQL and phpmysql.
  11. Write JavaScript code using HTML, CSS and jQuery.
  12. Be able to create an HTML and JavaScript front end that communicate with a C++ program through an Apache2 web server.
  13. Design and develop web based data visualization components and user interfaces that use quality metaphoric concepts.

Texts

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 class 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
  • RESTful Microservices
  • JavaScript, HTML and CSS
  • Bootstrap
  • SQL
  • Ruby
  • Ruby on Rails
  • Node.js
  • git and GitHub

Lab 3 teams:

Schedule

DateTopicReading/InfoQuizSlidesAssignment Due
Jan 16Course Intro
Software Construction
Ruby
Construction
Chapter 1
Intro to Ruby
Github
Intro
Ch 1 – Software Construction
Ruby
Watch GitHub Intro
Jan 18No Class
Watch Ruby Course
GitHub with VS Code
Watch Ruby Introduction: Video
Ruby Sample Code
More Ruby Code
Foundations Course:
Introduction-Git Basics
RubyStudent Information
Github
Create GitHub account
Install Ruby on MAC
Install Ruby on Windows
HW 1- VS Code
Jan 23Ruby
Ch 2 – Metaphors
Chapter 2
Learn Ruby: Ruby Course
Basic Data Types – Arrays
Quiz 1 Ch 2 – Metaphors
GitHub Classrooms
GDC
Triangle
Prime
HW 2 – Create GitHub account, create project
Git and VS Code
Jan 25Ruby
Ch 3 – Upstream Prerequisites
Learn Ruby: Ruby Course
Hashes – Debugging
Example Code
Activity to learn about Hashes
Jan 30Ruby
Learn Ruby: Ruby Course
Basic Enumerable Methods – Nested Collections
Enumerable Methods ActivityHW 3 – Ruby Programs 1
Feb 1
AWS EC2 Server
Learn Ruby: Ruby Course: Files and Serialization

AWS Ubuntu Video
AWS Linux getting started
Ruby on Ubuntu – Steps 1&2
Install Ruby 3.3.0

Feb 6Software Prerequisites
Foundations of Web Development
Setup Apache2 Webserver
Chapter 3
Foundations Course:
HTML Foundations
HTML Tutorial
HTML Examples
CSS Examples
Quiz 2Chapter 3HW 4 – AWS Linux Server
HW 5 – Ruby Programs 2
Feb 8Key Construction Decisions
GitHub
HTML, CSS
Bootstrap 5
Chapter 4
Ruby Course: Intermediate Git
Github, Git
Foundations Course:
HTML Foundations

Quiz 3Chapter 4
Git and GitHub
Project Gutenberg

HW 6 – Linux Command Line
HW 6.1 – Install Ruby
Feb 13Design in Construction
HTML, CSS
Bootstrap 5
Bootstrap Start
Chapter 5.1-5.3
Foundations Course:
HTML Foundations-Flexbox
Bootstrap Tutorial
Bootstrap ModalBootstrap Modal
Quiz 4Web Page ActivityHW 7 – Ruby Programs 3
Feb 15Design in Construction
Object Oriented Programming
Ruby Course: Read Object Oriented Programming with Ruby
Ruby Objects
Chapter 5.4-5.5
Quiz 5Chapter 5 SlidesHW 8 – Resume Web Page
Feb 20
Working Classes
Lab 1 – Ruby Game
Javascript
Ruby Classes
Ruby Explained: Classes
Chapter 6
JavaScript Course
JavaScript Tutorial
Simple Calc
Calculator
Javascript Games
Wordle
Quiz 8Working ClassesHW 9 – Ruby Programs 4
Feb 22JavaScriptFoundations Course:
Clean Code-Etch-Sketch
JavaScript Course
JavaScript Tutorial
Simple Calc
Calculator
Javascript Games
Wordle
HW 10 – Resume with Boot Strap
Feb 27High-quality RoutinesChapter 7
Foundations Course:
Fundamentals Part 5-Calculator
Clean Code
Quiz 9High-quality RoutinesHW 11 – JavaScript 1
Feb 29
Databases
Databases: Databases-Database and SQLKonva
Javascript Graphics
Git1 Git2 Git3 Git4

Databases
Mar 2-17SPRING BREAK
Mar 19
Database and SQL
phpmyadmin Tutorial
Install Rails, MarieDB and phpmyadmin
Databases: Project: SQL Zoo
Rails MVC Model
Intro SQL
SQL
Lab 1 – Ruby
HW 12 – JavaScript 2
Mar 21Ch 8 Defensive Programming
Ruby on Rails
Chapter 8
Ruby on Rails: Introduction-Rails Basics
Rails 7 Documentation
Quiz 10Defensive Programming
Mar 26Collaborative Programming
Ruby Active Records
Chapter 21
Ruby on Rails: Active Record BasicsAssets and Navigation
Quiz 11Collaborative ProgrammingLab 2 – JavaScript
Mar 28General Issues with Variables
Ruby Forms
Chapter 10
Ruby on Rails: Forms and Authentication
Variables
Apr 2Variable Names
Database Design
Ruby – More Forms
Chapter 10&11
Ruby on Rails: Advanced Forms and Active Record
Quiz 12Variable Names
Variables
HW 13 – Database
Lab 3: Project selection
Apr 4Team Meeting ActivityChapter 14Lab 3: Team Formation
Apr 9Using Conditionals.Chapter 15
Ruby on Rails: APIs
Ruby on Rails: Rails Sprinkles
ConditionalsMeeting form
Apr 11Team Meetings
Finish blog
HW 14 – First Rails App Blog
Apr 16Controlling Loops Landscape.Chapter 16
Add Bootstrap to Rails App
Add many to many association to blog
Ruby on Rails: Mailers and Advanced Topics
Quiz 13LoopsLab 3: UI Design
Apr 18The Software-Quality
Ruby on rails
Chapter 20
Add many to many association to blog
Adding Login to Blog
Ruby on Rails: Mailers and Advanced Topics
Quiz 14Software Quality LandscapeLab 3 – Software Design
Apr 23Developer TestingChapter 22
Advanced HTML and CSS: Animation
Quiz 15Developer TestingLab 3: Prototype
Apr 25DebuggingChapter 23
Advanced HTML and CSS: Accessibility
Quiz 16Debugging
Bootstrap help
APR 30RefactoringChapter 24
Advanced HTML and CSS: Responsive Design
Quiz 17Friends App
Refactoring
May 2Personal Character .Chapter 33Quiz 18Personal Character
Thursday, May 9 at 6:30 p.m.Final DemosCommand to run rails in background:
nohup rails s -b 0.0.0.0 &
Lab 3 complete
(Ruberic)
Final Presentation
(Ruberic)

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

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