James Skon, Hayes 310, 740-427-5369
Department of Mathematics and Statistics
Location: Hayes 203
Time: 12:10, Days: MWF
Office hours (in person and remote):
- MW 1-3, TH 1-2, Meet link
Tutor – Ryan Schultz:
Email: schultz4@kenyon.edu)
Tutor Location: Hayes 309
Tutor Times:
- Monday: 4-5pm
- Tuesday: 12-1pm
- Wednesday: 5-6pm
- Thursday: 10-11am
- Friday: 2-3pm
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
- Exhibit best practices in creating code that is well structured and organized using object-oriented concepts.
- Exhibit an understanding of quality use of identifier naming within code.
- Be capable of providing appropriate internal documentation within code.
- Understand and utilize proper use of internal barricading and error checking of values within a program.
- Be capable of creating detailed requirement for a problem bending solved.
- Be capable of creating architectural designs for multi-component software systems.
- Be capable of collaboration in software development including pair-programming, peer design and code reviews.
- Create and set up virtual machince running Linux in the cloud (Azure)
- Be capable of creating and using a MySQL database using SQL and phpmysql.
- Write JavaScript code using HTML, CSS and jQuery.
- Be able to create an HTML and JavaScript front end that communicate with a C++ program through an Apache2 web server.
- Design and develop web based data visualization components and user interfaces that use quality metaphoric concepts.
- 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 |
| 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. |
| TOTAL | 100% |
Class server
This call will use a server at: http://jimskon.com. However, if it is down you can also get to it via: http://98.100.252.181/.
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
- HTML Validator
- cygwin – This is a tool to give you Linux software on a Windows system. A good way to get SSH.
- NetBeans
- Linux
- Notepad++ (Windows), How to install NppFTP Plug In to open and save file from server – link
- BBEdit (Mac – you can use the free version)
- PuTTY (Windows), ssh (Windows with cygwin)
- Filezilla – A tool for transfering files.
- X Windows for Mac
- TightVNC – X for WIndows
- ssh
- Make
- Git, Github
- Emacs
- Python SQL connector
cslab.kenyon.edu links
- Monitor Active Processes (Enter filter like “cgi” to see matching processes)
Languages/Libraries
Tutorials/Reference
- Using PuTTY to log in on from Windows
- Using SSH to log in on from Mac
- Using Notepad++ to edit and transfer files on Windows
- Using TextWrangler to edit and transfer files on Mac
- html & css
- Introduction to HTML
- Introduction to SQL Course
- Information on XMLHttpRequest Object
- AJAX introduction
- AJAX programming hints and suggestions
- Tips for using GitHub and git
- POSIX Threads Programming
- XML Parser for C++, Documentation
- 7 JavaScript Things I Wish I Knew Much Earlier In My Career
- Data Visualization with D3 course
- Using Node.js To Create Real-Time Web Applications
- Socket.io: let’s go to real time!
- Socket: emit Cheat Sheet, Serving multiple file types.
- Fifo’s in python
Links
- Goverment Datasets
- Data driven literary analysis
- 11+ Killer Open Data Sources and Free Visualization Tools
- Big Data: 33 Brilliant And Free Data Sources For 2016
- Daily WTF – a how-not-to guide for developing software
Schedule
Project Grading Rubric
| Criteria | Excellent | Acceptable | Unacceptable |
|---|---|---|---|
| Documented & Maintainable (The program is well-documented with appropriate names and comments making it easy to understand.) |
|
|
|
| Adaptable & Reusable (The program is modular, using abstraction well and any limitations are clearly specified.) |
|
|
|
| Robust & Correct (The program provides the correct output for all possible input.) |
|
|
|
| Efficient & Elegant (The program uses both time and space on the computer effectively, without losing source code clarity.) |
|
|
|
| 25-20% | 19-11% | 10-0% |
Team Demo Rubric
| Requirement | Comments | Points | Score |
| Meets Functional Expectations | 40 | ||
| Presentation Organization | 30 | ||
| Preparation – Team is prepared with examples | 30 | ||
| Total | 100 |
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/
