Tags:
create new tag
view all tags

SCMP368 Software Development

James Skon
Spring 2018
Location: Tomsich Hall 207, Time: 9:10, Days: MWF
Office Hours: 10-11 MWF, 3-4 TH
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

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++
Notes

Tools

cslab.kenyon.edu links

Languages/Libraries

Tutorials/Reference

Grading

Category %
Homework 15
Quizzes 10
Individual Project 30
Team Project 30
Exams 15

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

Date Topic Reading / Info Quiz Slides Assignment Due
01-15 Software Construction
Project 0: Programming in the Linux environment
Chapter 1
Census Name Information Demo
  1._Software_Construction.ppt

 
01-17 Software Metaphors Chapter 2
Linux Introduction
PuTTY
Project 0
Notepad++, BBEdit , EMACS
HTTP & CSS, HTML Tutorial, Bootstrap introduction, Bootstrap Course.
Link Chapter 2
Linux Slides
Questioneer
01-19 Preparation for coding
Name Data Demo, Inverted Index
Project 1, Part 1: Shakespeare Index
Chapter 3, Map STL c++
namesdemo.cpp
Web Names Lookup
Name Data Files - From US Census Data
Filezilla - a tool for transferring files
Requirements Checklist
Link Chapter 3  
01-22 Key Construction Decisions
HTML, CSS
Chapter 4
Project 1 Review
Link Chapter 4 Project 0
01-24 Design in Construction
Make Files, Bootstrap
Chapter 5
Make Files, The Make Command, Bootstrap, BootStrap Course, BootStrap Tutorial
Link Chapter 5 Make Files  
01-26

Makefiles
Project 1, Part 2: Simple Web Shakespeare

Make Files , The Make Command
The Demo code for Name program
The English stemmer example.
C++ Web Programming

Ajax Tutorial for Beginners

  CGI and AJAX
HTTP & CSS
01-29 Web Programming with Ajax
Javascript
Make Files
CGI and AJAX
  Chapter 5  
01-31 Javascript and JQuery.
In class do JavaScript & jQuery Tutorials
Javascript Tutorial, JQuery Tutorial, Learn JQuery, JavaScript & jQuery Tutorials   Video to watch on Ajax  
02-2 Web Programming with Ajax
Javascript
Name Data Web Program Link
github Link

   

Project 1, Part 1

Bootstrap

Meet with Professor for code review

02-5 Working Classes
Project 1, Part 3: Client/Server Web Shakespeare
Chapter 6 Link Chapter 6

JavaScript and JQuery Tutorial Work

02-7 High-Quality Routines Chapter 7

Link 7._High-QualityRoutines.ppt
XML Overview
 
02-9 Introduction to XML XML Introduction , XML Tutorial - Review up to XML Attributes section before class for quiz. Link Introduction XML Part 1
Introduction XML Part 2
Introduction XML Part 3
Project 1, Part 2
02-12 Project 2: XML Lookup
User Interface design
Project 1-3, Protocol Oveview , Tutorial: Parsing XML with JQuery
MathML , Shakespeare , Bible , Quran
XML Parser for C++ , Documentation
Demo Software: /home/class/SoftDev/cppXMLAJAX/
  Bible Example , Other examples  
02-14 Defensive Programming Chapter 8 Link DefensiveProgramming.ppt  
02-16 Introduction to GITHub Project 2: XML Project
User Interface Design Basics

Principles of User Interface Design
User Interface Design Tips, Techniques, and Principles
Interface Hall of Shame
GIT Video
- View for quiz , GitHub for beginners
GIT HW
Link User Interface Design
GitHub.pdf

Project 1, Part 3


02-19 Collaborative Programming
Group Formation
Chapter 21
Link Chapter 21 Project 2, Proposal
02-21 Project 3: Data Visualization, metaphor, and visual communication. Project 3
Visualization Introduction - watch before class
     
02-23 Project 3 - Project discussion and brainstorming.
Group Formation
visap2015_Cruz_WrongfullyRight.pdf - Please read before class, Visualizing empires decline 1, 2, Lisbon's Traffic 1, 2, 3, 4, London 1, 2, An ecosystem of corporate, Embedded Space Visualizer,   10.Variables.ppt Project 2, Interface Design
02-26 Visit to Gund Art Gallery
Data_visualization_gallery_exercise - Please review before Class      
02-28 General Issues in Using Variables, the Power of Variable Names Chapter 10, Chapter 11 link 11.Variables.ppt GIT HW
03-2 Visualization       Project 2, Complete
03-5 - 03-16 Spring Break        
03-19 Midterm Exam - Study Guide Chapters 1-11,21, User Interface Design, GIT Link    
03-21 Team Presentations on Visualization Plan Show mockups, explain goals.     Project 3 Proposal
03-23 MySQL and the World Database SQL World Database, phpmyadmin      
03-26 Introduction to SQL, phpmyadmin SQLTutorial, Learn SQL, phpmyadmin Tutorial      
03-28 Project 4 : Phone App, MySql with C++ C++/MySQL tutorials, Phonebook app, Complete     Project 3 Prototype

SQL HW 1
03-30 Project Lab Day       SQL HW 2- phpmyadmin
04-02 Project 4 information and work.       Project 4 - Part 1
04-04 Demostrations   Link   Project 3 Complete
04-06 A visit to Gund Gallary.       Code Review Project 3
04-9 Project 5: Interactive two-user system with with Database Project 5      
04-11 Automatic updating webpages
Project 5 Group formation
Live Monitoring Processes , code     Project 4 - Complete
04-13 Personal Character Chapter 33 Link Chapter 33  
04-16 Project 5 Concept presentations Be prepared to demonstrate and talk about your idea     Project 5 Part 1: Project concept,and team formation
04-18 Project 5: Lab work day        
04-20 Node.js, socket.io, webChat demo. node.js, node.js tutorials, socket.io, Socket.io: let’s go to real time!, Chat Demo, NodeMySQL Example   Chapter 15 Project 5 Part 2: Complete Project Design using Metaphoric concepts
04-23 Group Work Day        
04-25 Project 5 presentations Present Architecture in class     Project 5 part 3: Architectural Design
04-27 Project 5 Team Work Day        
04-30 The Software-Quality Landscape Chapter 20   Chapter 20  
05-2 Project 5 Working prototype demos     Assessment Form Project 5 Prototype Demo
05-4 Developer Testing Chapter 22 Link Chapter 22 Project 5 - Part 5 - complete system
05-10 8:30-11:30am Final Presentation Project 5   Evaluation Form Moodle Link for Final Presentation
Moodle Link Complete Project
Personal Statement

Software project grading rubric

Criteria Excellent Acceptable Unacceptable
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%
Delaney Ambrosen <ambrosend@kenyon.edu>, Greg Holste <holste1@kenyon.edu>, Emma Hood <hoode@kenyon.edu>, lambrinos1@kenyon.edu, Alexander Powell <powellae@kenyon.edu>, Flynn Shannon <shannon1@kenyon.edu>, Miles Shebar <shebar1@kenyon.edu>, Jensen Shurbert <shurbertj@kenyon.edu>, Michael Trobich <trobichm@kenyon.edu>

Topic attachments
I Attachment History Action Size Date Who Comment
PowerPointppt 1._Software_Construction.ppt r1 manage 715.0 K 2018-01-15 - 04:39 JimSkon  
PowerPointppt 10.Variables.ppt r1 manage 899.0 K 2018-02-28 - 14:01 JimSkon  
PowerPointppt 11.Variables.ppt r1 manage 405.5 K 2018-02-28 - 14:01 JimSkon  
PowerPointpptx 2._Metaphors.pptx r1 manage 758.1 K 2018-01-16 - 21:00 JimSkon  
PowerPointppt 20.SoftwareQuality.ppt r1 manage 743.5 K 2018-04-30 - 11:34 JimSkon  
PowerPointppt 21.Collaboration.ppt r1 manage 231.0 K 2018-02-19 - 13:29 JimSkon  
PowerPointppt 22.DeveloperTesting.ppt r1 manage 921.0 K 2018-05-04 - 12:59 JimSkon  
PowerPointpptx 3._Preparation.pptx r1 manage 867.4 K 2018-01-19 - 13:45 JimSkon  
PowerPointppt 33.PersonalCharacter.ppt r1 manage 132.0 K 2018-04-13 - 12:40 JimSkon  
PowerPointpptx 4._KeyConstructionDecisions.pptx r1 manage 92.7 K 2018-01-19 - 13:59 JimSkon  
PowerPointpptx 5._DesigninConstruction.pptx r1 manage 427.4 K 2018-01-19 - 13:59 JimSkon  
PowerPointppt 6._WorkingClass.ppt r1 manage 968.0 K 2018-02-05 - 13:38 JimSkon  
PowerPointppt 7._High-QualityRoutines.ppt r1 manage 680.0 K 2018-02-07 - 14:12 JimSkon  
PowerPointppt 8._DefensiveProgramming.ppt r1 manage 756.0 K 2018-02-14 - 14:09 JimSkon  
PowerPointpptx CGI-AJAX.pptx r2 r1 manage 1108.3 K 2018-01-29 - 13:38 JimSkon  
JPEGjpg CodeComplete.jpg r1 manage 41.2 K 2017-12-14 - 16:26 JimSkon  
PDFpdf Data_visualization_gallery_exercise.pdf r1 manage 2894.2 K 2018-02-23 - 18:06 JimSkon  
PDFpdf GitHub.pdf r1 manage 975.2 K 2017-12-03 - 04:33 JimSkon  
PowerPointpptx Introduction-to-Linux.pptx r1 manage 2295.0 K 2018-01-16 - 20:50 JimSkon  
PowerPointppt Makefile-C.ppt r1 manage 402.0 K 2018-01-19 - 13:59 JimSkon  
PowerPointpptx Makefile-C.pptx r1 manage 100.8 K 2018-01-19 - 14:01 JimSkon  
PowerPointppt UserInterfaceDesign.ppt r1 manage 415.0 K 2018-02-16 - 13:58 JimSkon  
PDFpdf visap2015_Cruz_WrongfullyRight.pdf r1 manage 6266.7 K 2018-02-23 - 03:25 JimSkon  
Edit | Attach | Watch | Print version | History: r60 < r59 < r58 < r57 < r56 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r60 - 2018-05-11 - JimSkon
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2018 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback