SCMP 118 - Introduction to Programming in C++
Fall 2019: 1:10-2:30PM TH
Instructor: James Skon
This course presents an introduction to computer programming intended both for those who plan to take further courses in which a strong background in computation is desirable and for those who are interested in learning basic programming principles. The course will expose the student to a variety of applications where an algorithmic approach is natural and will include both numerical and non-numerical computation. The principles of program structure and style will be emphasized. Offered every semester.
Course Information
- James Skon
- Office Hayes Hall 310
- Office hours: 2-3 Mon & Wed, 3-4 Tues & Thurs, 10-11 Fri
- Phone: (740) 427-5369
- Textbook: Problem Solving with C++
8th
, 9th
, or 10th
ed, by Walter Savitch
. Cheap used books available
.
-
- Room and Time: PRCL09 1:10-2:30 Tuesday and Thursday
- Paperless: This course is intentionally paperless. All assignments are turned in online through Moodle. The instructor will normally not accept work written or printed on paper. (Any exceptions must be pre-approved by the instructor).
Tutors and Graders
- Tutors: Sejin Kim, Ryan Schultz
- Tutoring schedule:
- Ryan (schultz4): Sunday 7-8p, Tuesday 7-8p, Thursday 1-2:30p
- Sejin (kim3): Sunday 9-10p, Tuesday 1-2:30p, Thursday 7-8p
Resources
Code Lab
CodeLab
is a tool that develops coding skills and understanding through coding exercises. The best way to learn to program is to program! Just like the best way to learn to play a sport is to play that sport.
CodeLab
assignments are NOT accepted late. Code lab
is required, and counts for 15% of your grade.
Assignments
Due Date: All assignments are due by midnight the day of due unless otherwise specified. There will be a 12 hour grace period during which the student will received a penalty equal to 5% of the value of the assignment; any assignments submitted more than 12 hours late will not be accepted. Exception: Each student may have a 24 hour extension on one lab and one history without penalty. This extension will be applied to the first assignment submitted outside the grace period (or retroactively used to cancel one grace-period penalty if not used by the end of the semester.)
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.)
Academic Honesty and using code you did not write: Turing in code you did not write is cheating.
- You should never receive code from other students, use code from the internet, or use instructor solutions from past semesters. Any code you submit must be written entirely by you. (See the "cup of coffee" rule under collaboration.)
- Likewise, "facilitating academic dishonesty" is a violation of academic honesty. Thus sharing your code with other students is also forbidden.
- The instructor has tools for checking the similarity of code, and will use them periodically to see if students code is too similar to be explained by coincidence.
- If you suspect someone has used your code, you should report it.
Academic Honesty and use of Repl.it: By default all programs you create on repl.it are public. That means anyone who can guess your username can then look at your code. This is cheating, and is not allowed for any non-colaborative assignments. You should ALWAYS set your programs to "Private" so that no one else can see them. If you leave your code public, and someone finds it and uses it, it will be flagged as a possible infraction, and you may find yourself in the difficult situation of having to explain what happened to the AIB.
So please keep your work private!
Computer History Assignments: Once a week you will turn in a brief essay on some computer history fact from the
Computer History Museum
(
Timeline
) (or other computer history source). One or two people people will be chosen each week to oraly describe what they found in 2 minutes at the beginning of class. I will ask for volunteers, but will cycle through everyone before I repeat anyone. The idea is give to us all an opportunity to explore the history of computer science, and to find something that interests each of us. Start by going to the
computer history timeline
, and for each assignment explore the requested years until you find something interesting. Then write up a 200-300 word essay about what you found, what you found compelling, and why you think it is significant. Write the essay in Moodle, and include a link to the item you found so it can be displayed while you share in class. These are due midnight before the day they will be presented (and appear in the calendar below).
Late submissions will not be accepted on these assignments.
Course Grades
Category |
% |
Notes |
History Essays |
7% |
Equally distributed |
Labs |
48% |
Equally distributed |
Code Lab |
17% |
All questions equal weight |
Exams |
28% |
Midterm 11%, Final 17% |
Course Calendar
May be subject to change as course unfolds. Asways check here for latest update.
Date |
Required Reading |
Notes/Hands On/Links |
Code Samples |
Quiz |
Slides |
CodeLab |
Assignment Due |
Sept 5 |
Chapter 2.1-2.2 - C++ Basics (Variables, Assignments, I/O) |
Notes3 Hands on |
CodeDay3 |
Link 1 |
Ch2-2.1-2 |
1. First Exercises, Comments |
Lab 0 Chapter 1 Lab 0 Sample Code |
Nov 12 |
Chapter 8.3,10.1 Vectors |
Hands On Hands On |
Vector and String Example |
Link 10 |
|
|
Lab 7 Chapter 7 1970-1974 |
Nov 14 |
Start Fractions Lab, C++ file I/O |
Hands On (Text Index) Classes Tutorial , Old In Class Activity, Solution |
Code(Friend Example) |
Link 11 |
|
11. Vectors |
1975-1979 |
Sept 10 |
Chapter 2.2-2.5 - Data Types, Expressions, Flow Control, Style |
Notes4 Hands on |
CodeDay4 |
Link 2 |
ch2.3-5 |
2. Assignment, Input And Output, Integers, Other Expressions, Data |
1930s |
Sept 12 |
Chapter 3.1-3.3 - Boolean Expressions, Branches, Loops |
Notes5 Hands On |
CodeDay5 |
Link 3 |
C++ Controll Flow ch2.3-5 ch_03-1.ppt |
|
|
Sept 19 |
Chapter 3.3-3.4 - More on Loops |
Notes Quote |
Code |
Link 4 |
Ch3-P3 |
4. Techniques, Conditional, Loops, Constants |
Lab 1-2 Chapter 2 1940-1944 |
Sept 24 |
Chapter 3 - blocks and variable scope, enumerated types, short circuiting, Switch Statement Chapter 4.1-4.2 - Introduction to Functions |
Functions |
Code1 Code2 |
Link 5 |
Ch3-P3
|
|
|
Sept 26 |
Chapter 4.3-4.6 - Procedural Abstraction, Local Variables, and Overloading Names. Chapter 5.1-5.4 - void Functions, Call-By-Referance, Procedural Abstraction, Driver and Stub functions |
Functions2 |
Code Code |
Link 6 |
ch4.1-3
|
|
1945-1949 |
Oct 1 |
Chapter Ch 5 functions - void Functions, Call-By-Referance, Procedural Abstraction, Driver and Stub functions |
Quote |
|
Link 7 |
ch_04.4-6
CH_5.1-3 CH_5.4 |
5. Functions, Type casting, Boolean Expressions, Multiway If-Else, Switch, Iteration |
1950-1954
Lab 2 Chapter 3
|
Oct 8 |
Chapter 7.4 - 2 dimensional Arrays, Arrays with Functions |
Sort |
|
link 8 |
Ch7.1-4 Ch7.4 |
7. Random |
Lab 4-1 Chapter 5 |
Nov 5 |
Chapter 8.1, 8.2 - C-Strings and String class |
StringNotes1 Hands On |
Code Code Example |
Link 9 |
Ch8.1-2 |
10. Strings |
1965-1969
Lab 6 Chapter 7
|
Aug 29 |
Chapter 1 - Introduction to Computers and C++ Programming. Our Computing Environment. Trying C++, using CodeLab |
repl.it First Program |
CodeDay1 |
|
Day 1 |
|
Student Information Form |
Sept 3 |
Chapter 1.3-1.4 and C++ Programming. Our Computing Environment. |
Notes2 Hands on |
Code2 |
|
Day 2 |
|
|
Sept 17 |
Chapter 3.3-3.4 - More on Loops |
Notes5 |
CodeDay5 |
|
Ch3 |
3. Logical Expression, Arithemetic Expression, Branching Statements |
Lab 1-1 Chapter 2 |
Oct 3 |
Chapter 7.3-7.4 - Arrays, Arrays with Functions,Programming with Arrays |
Creating random numbers Hands On 1 - Overloading Hands On 2 - Call by Referance Hands On 3 - Random numbers
Hands On |
Code |
|
Ch7.1-4 |
6. Void functions, Call-By-Referance |
Lab 3 Chapter 4 |
Oct 10 |
October break |
|
|
|
|
|
|
Oct 15 |
Chapter 7.4 - Multidimensional Arrays, - Tick Tack Toe |
Hands On Hands On |
Code TTT |
|
Ch7.4 |
|
Lab 4-2 Chapter 5 |
Oct 17 |
Chapter 10.2 - Intro to Object Oriented Concepts, structures |
ClassNotes1 |
Code |
|
IntroObjectsc++ |
8. Arrays |
|
Oct 22 |
Midterm Exam |
Study Guide |
|
|
|
|
|
Oct 24 |
Chapter 10.2, 10.3, Classes, Friend Functions |
HandsOn StudentClass |
CodeOO Code
Candidate |
|
|
9. Array Techniques |
Lab 5 Chapter 7 1955-1959 |
Oct 29 |
Chapter 10.2, 10.3, Classes, Friend Functions |
Hands On, Classes Tutorial |
Code, DateClass |
|
Ch_10_2-3 |
|
|
Oct 31 |
Chapter 10.3 - ADT's, Separate Compilation |
Hands On |
Code(Friend Example) |
|
Chap 12 |
|
1960-1964 |
Nov 7 |
Chapter 8.3,10.1 Vectors |
Hands On StructNotes C++ string reference |
Code |
|
Vectors |
|
|
Nov 19 |
Files - input and output |
Hands On - Poetry Fun EmilyDickinson1.txt |
CountWords RandomNumbers Code, Code |
|
Ch_06.1-3 |
12. OOP |
|
Nov 21 |
Classes, Card Game, Intro to GitHub |
Blackjack start on GitHub |
|
|
GitHubIntro |
13. Class Definitions |
1980-1984
|
|
Thanksgiving Break |
|
|
|
|
|
|
Dec 3 |
Chapter 6.1 6.2, 6.3 - File I/O, Character I/O, Array's with Classes |
Shakespeare in class start activity |
Code |
|
Ch_06.1-3 Thanksgiving News |
14. File I/O |
1985-1989
Lab 8 Chapter 8
|
Dec 5 |
Chapter 14 Recursion |
Hands On, Factorial , Reversing a string |
Recursion in graphics , Binary Search |
|
Ch14
|
|
Lab 9 Chapter 10
1990-1994
 |
Dec 10 |
More Recursion |
Merge Sort , Binary Seach , Binary/Linear Compare , Sorting , Program
Towers of Hanio |
Code, CodeComplete SortCompare Code |
|
ch14 |
15. Recursion |
1995-1999
|
Dec 12 |
Chapter 14 Recursion, sorting with recursion |
KonvaJS Tutorial |
KonvaJS Activity |
|
|
|
2000-2010 Final Project
|
Dec 17 |
Final Exam: Mon, Dec 17 at 1:30-4:30 pm |
Final Study Guide |
|
|
|
|
KonvaJS Activity |
Assignments are due by midnight of the day due.
Academic Honesty
Any work you submit for credit in this course must result directly from your own understanding. Moreover, written work must be a creation of your own hand. Presenting the work of others as your own is strictly prohibited. At Kenyon we expect all students, at all times, to submit work that represents standards of academic integrity. It is the responsibility of each student to learn and practice the proper ways of documenting and acknowledging those whose ideas and words you have drawn upon (see Academic Honesty and Questions of Plagiarism in the Course Catalog). Ignorance and carelessness are not excuses for academic dishonesty. If you are uncertain about the expectations for academic honesty in this class, please ask for clarification.
It is likely that proof, algorithm and code solutions for most problems exist online. Generally you should not search for any of these solutions. If you do use online or written documents, you
must fully disclose and reference everything used, and be prepared to lose some credit if the help is deemed to be beyond that which you should used. The rule of thump is you can use references to help understand the problems and terminology, but should not use (and copy or modify) complete or partial solutions found online.
If you use online resources, up to and including the use of code found on the internet, and do not disclose it, you will be subject to AIB notification.
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, Coordinator of Disability Services (phone 5145).
Statement on Title XI
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/