Classroom location: online
Class schedule: online, MWF 12-12:50pm (-01),
MWF 1-1:50pm (-02)
Corequisites: MATH 105
Instructor: Dr. Don Allison
Office: Online, Blackboard Collaborate
Ultra
Phone: 436-3439
Email: allisodl
(at) oneonta.edu
Office Hours: MWF 4-5pm
Others
by appointment using Blackboard Collaborate Ultra or Microsoft Teams
Catalog Description:
An introduction to the fundamentals of computer programming using a
modern computer language. Topics include primitive data types, expressions and
statements, control structures, input and output, arrays, pointers, and
structures. Students will write a number of programs
with applications taken from mathematics, science and business.
Course Description (the inside scoop):
Learning to program is
like learning any other foreign language.
The only way to master it is to practice, practice, practice! While the syntax is much more regular than any
other foreign language, you will still have to learn the grammar constructs so
that you can use them fluently, and memorize
the vocabulary. Just like learning any
other foreign language, if you fall behind, it is almost impossible to catch
up. This means you will need to spend
some time every week practicing the language—in this case, by writing
programs instead of writing and speaking sentences in the language.
Although the language
syntax is simple, you will be “talking” to a computer which takes everything
you say literally, unlike a native speaker of the language you are learning,
who can make allowances for your faux pas.
Therefore you will have to plan ahead of time what you want to say (ie design your program before you start coding), think
logically step by step without omitting anything, no matter how trivial, and
pay meticulous attention to detail!
To do well in this
class, you will have to spend time outside class reading the text, writing
programs, memorizing the details of the language syntax, etc,
for each hour you spend in class.
Programming is something you have to learn by
practice, and so there will be a program due every week. These programs will require a great deal of
time to complete as you design, code, and test each of them. Class time will be primarily used for
lectures, questions, writing programs, and demonstrations, so you will need to
spend roughly 3 hours a WEEK working on your own time on the
material, reading the text, writing the programming projects, writing additional
programs of your own design to enhance your understanding of the material
covered in class, going over your notes, and so on. Just because there are 15 programming
projects for this course that will be assigned doesn’t mean that you shouldn’t
write extra programs to solve problems of your own devising. There is a lot of material to cover in this
course—that is why it was increased from 3 to 4 hours of credit, and then more
recently split into two 3 hour courses. Don’t be misled by the apparent slow pace at
first. Once the fundamentals are
covered, we will be moving through the more advanced material (such as pointers,
structures, multidimensional arrays, etc) at the same
rate at which we covered variables and control flow—only these concepts will be
new to most of you, and so will take more time to master than the simpler
procedural programming stuff did.
A common mistake is to
wait until the night before a program is due before starting to work on a
programming project. You will not
be able to do many of the projects in a single session in front of your
computer. In fact, to be done well, you
should spend more time away from the computer thinking about the design of the
project than you spend in front of the computer coding. You should start working on a project as soon
as it is assigned in order to get it done by the due
date!
Don’t be afraid to ask
questions and seek help. Class lectures
should be your definitive answer source.
If you have questions that come up outside of lecture or that you do not
wish for some reason to ask in office hours, email me. The faculty hold office hours and help
sessions just for you, the student, so take advantage of them! Since this is a 100 level
course, tutors are sometimes available for free through the CADE (assuming they
can find a qualified student willing to do so).
I am up all hours of the night, so if you have a question, email
me! However, realize that if it is
outside office hours, I might have to give you a quick answer then and have you
come back later for a fuller explanation.
One thing to note,
however, about asking others for help: it is all right to ask others general
questions about programming, C++, or the assignments. HOWEVER, it is NOT
acceptable for you to ask others (except the instructor or the TA, if there is one) to write code for you. It is okay to occasionally ask a class
member if they know why you are getting a particular compiler error, but it is not
okay to ask them to help you write part of a function. Code plagiarism or code sharing will be dealt
with as academic dishonesty, for which there are severe repercussions, so make
sure that what you turn in is the product of your own work and not someone
else’s! You should be able to explain to
me everything about any program that you turn in, and I will
occasionally ask you specific questions about your programs (such as, “Why did
you use a for loop here?”) and expect you to be able to answer them
easily! (These will be a part of your
program grade.) The objective of this
course is for you to learn how to program, and as such
everything you turn in should be your work alone. You will have plenty of opportunity in other
courses to work collaboratively. If you
have any questions about whether some type of collaboration is allowed or not,
ask me first. Better to know for sure
than to risk your program (or semester) grade on a guess!
Course Goals:
The purpose of the
course is to develop proficiency using the C++ programming language in particular, and programming a computer in general. A third goal is to develop proficiency in
algorithmic thinking. At the end of the
course, students should be able to write a wide variety of simple to moderately
complex programs, and should be adequately prepared to
progress to the next core CS course.
Students should also have a basic understanding of what a computer is
and how it operates. Students will demonstrate
proficiency as they write a series of increasingly complex programs. At a higher level, students will learn to
think algorithmically, and to develop logical problem solving
skills
Text and
Software:
The required text for
the course is Tselikis and Tselikas, C From Theory to
Practice, 2nd edition, published by CRC Press in 2017, ISBN-13
978-0=367-56600-5. The required text
explains the features and functionality of C/C++ in the context of programming,
with many example programs. You should
read it as indicated in the schedule below as we cover the various topics. You will also find a copy of the C++ Pocket Reference by Kyle Loudon,
published by O’Reilly in 2003, ISBN-13 978-0596004965 to be very useful. It’s cheap, small, and a nice reference for
C++. Both are required.
Programs
for this course can be developed on any platform that supports the C++
programming language. However, I will be
using (and will assume your assignments will work with) Windows 10 and
Microsoft Visual Studio 2019, both of which are for free to our students. You will need your own computer and the
Microsoft products if you want to replicate the teaching environment. If you need a copy
of Windows 10, it is free for students here. You can get the community edition of Visual
Studio for free from here. You
can also get a copy of both Windows 10 and Visual Studio 2019 through the MSDN
Academic Alliance—email me for details, but be warned
that Visual Studio 2019 has gotten so large that the install won’t fit on a DVD
anymore! You’ll need a high speed internet connection to install it. Other options include using TextPad (shareware) and the free Borland command line
version of their C++ compiler which you can download from their web site. If you prefer a UNIX/Linux environment, G++
is probably the best C++ compiler currently available, and
is available for free as well. You could
also try Dev C++, Eclipse, Netbeans, OpenWatcom, replit, or Clang.
Tentative Schedule: (order of readings &
other assignments, by due dates, course activities, course content by expected
order of coverage, test dates and test coverage)
Date |
Monday |
Tuesday |
Wednesday |
Thursday |
Friday |
Aug
16-20 |
|
|
New Student
Orientation |
||
Aug 23-27 |
Classes
Begin |
|
|
|
Add/Drop
ends Sunday QUIZ 1 |
Aug
30-Sept 3 |
|
|
|
Last
day to add a full semester course QUIZ 2 |
|
Sept 6-10 |
Labor
Day, no classes |
Classes
resume |
|
QUIZ 3 |
|
Sept
13-17 |
|
|
|
QUIZ 4 |
|
Sept 20-24 |
TAP certification
begins |
|
|
QUIZ 5 |
|
Sept
27-Oct 1 |
|
|
|
QUIZ 6 |
|
Oct 4-8 |
|
|
|
College
closes after last class QUIZ 7 |
|
Oct
11-15 |
BREAK |
BREAK |
Classes
Resume |
Interim
progress reports due |
QUIZ 8 |
Oct 18-22 |
|
|
|
Last
day to drop a course QUIZ 9 |
|
Oct
25-29 |
|
|
|
QUIZ 10 |
|
Nov 1-5 |
|
|
|
DST
ends Sunday…set clocks back QUIZ 11 |
|
Nov
8-12 |
Spring
pre-enrollment |
|
|
QUIZ 12 |
|
Nov-15-19 |
Last
day to make up incompletes |
|
|
QUIZ 13 |
|
Nov
22-26 |
|
College
closes after last class |
Last
day to withdraw BREAK |
BREAK |
BREAK |
Nov 29-Dec 3 |
Classes
resume |
|
|
QUIZ 14 |
|
Dec
6-10 |
Last
day to turn incomplete grades Last
day of class |
Study
day |
8MWF 8-10:30 11MWF 11-1:30 2MWF 2-4:30 CSCI 250-01 |
8:30TR 8-10:30 11:30TR 11-1:30 2:30TR 2-4:30 |
9MWF 8-10:30 12MWF 11-1:30 CSCI 116-01 3MWF 2-4:30 |
Dec 13-17 |
10MWF 8-10:30 1MWF 11-1:30 CSCI 116-02 4MW 2-4:30 |
10TR 8-10:30 1TR 11-1:30 4TR 2-4:30 |
|
|
|
https://suny.oneonta.edu/academics/college-calendar/spring-key-dates-deadlines
http://www.holidayinsights.com/moreholidays/
College Policies
All college policies will be adhered to,
including policies on attendance, academic honesty, etc. Students are expected to be familiar with and
adhere to these policies as outlined in the student handbook, this syllabus,
and other administration publications. SUNY Oneonta Course Policies and Procedures
Attendance Policy:
This course meets
synchronously, MWF 12-12:50 or 1-1:50.
You are expected to be on blackboard at those times, ready to
participate. During class, I will answer
questions, we will discuss the topic more in depth, we will write code
illustrating the concepts, etc
Collaboration Policy:
Cheating or other
academic dishonesty hurts others as well as yourself and will not be
tolerated! For this course, however, it IS
acceptable to collaborate with your classmates, under certain conditions. All work submitted on the exams should be
yours and yours alone, as should any code you submit. If you are working on a project and run into
a problem, it is acceptable to ask a classmate or other person a general
question (such as, “what are the two conditions needed to guarantee termination
of a recursion”), AS LONG AS you actually do the work yourself. For instance, it is unacceptable to ask
someone (other than your instructor or TA) to write code for you to handle
argument passing for a function, or code for opening a file for input. You can share code that was discussed in class however. In
other words, discussing algorithms or the lecture content is okay, but
discussing specifics of the programming assignments is not. You should be the physical creator of
everything you turn in that wasn’t provided by the instructor, so sitting next
to someone and typing what they type is NOT
okay. You should also be able to answer
any question I have about how every one of your programs works.
Programming Style Guidelines:
Programming style is an
important part of coding, and programs you write for this class will be
expected to follow the style guidelines discussed in class and illustrated by
the programs we write in class. You
should indent your code to reflect its internal structure. You should use block comments to explain what
your code is doing at a high level. Each
function should have a header that gives the function name, the inputs, the
output(s), and lists any side effects, as well as providing a two or three
sentence summary of what the function does.
In addition, your main program file should have a block header similar to the following:
// CSCI 116 Fundamentals of
Programming: C++ Fall 2021
// Program #1: Getting
started
// Author: Don Allison
// Date Due: 1 September
2020
//
// This object of this
program is to verify that we can compile and
// execute programs using a
C++ compiler.
Your header should
include the course name and number, the assignment number, your name, the
program due date, and a two or three sentence description of the purpose and
function of the program.
Assignment Turn-in Procedure:
You should run your
program, capture the output, and append it to the bottom of your source file
that contains the main function, as comments.
You should print out your source and include file(s) as PDF files, and upload them to Blackboard to the appropriate
assignment. These should be turned in by
the beginning of class on the day they are due.
Make sure you turn in all the required parts, and that your name is
in the code comments!!!
Email:
Any
time you need to communicate with me about the course via email, you MUST put
“CSCI 116” in the subject line.
Otherwise it will get lost and I won’t see it.
Grading and Other Administrivia:
Exams:
There will be two
exams. Each exam will contribute 15% of
your grade. There will be a final exam
experience which will count 20%.
Programming Projects:
The programming
projects are an integral part of the course.
There will be roughly one programming project a week, with each one
illustrating or emphasizing the topics covered during that week. Because the projects are so important, they
make up 40% of your grade.
Homework, etc:
The remaining 10% of
your grade will be determined by your grades on homework assignments, class
participation, weekly quizzes, etc.
Grade Computation:
Component
|
Weight
|
Tentative Date
|
Exam 1 |
15% |
6 October |
Exam 2 |
15% |
17 November |
Programming Projects |
40% |
See above schedule |
Weekly Quizzes |
10% |
See above schedule |
Final Exam Experience |
20% |
10 December 11am (-01) 13 December 11am (-02) |
Total |
100% |
|
Make-up Test
and Late Assignment Policy:
Weekly quizzes will be given at the beginning of class each
Friday. They will consist of a couple of
short answer questions, and you will have 5 minutes or so to complete
them. There will be NO MAKEUPS for
weekly quizzes. If you miss one because
you are late to class or are absent, it will be recorded as a 0 grade. HOWEVER, I will only count the top 10 weekly
quiz grades, so you have four quizzes that you can skip or do poorly on and
still not affect your grade. The purpose
of the quizzes is simply to make sure you are keeping up with the material and
absorbing the concepts being discussed that week. You should use them as a diagnostic tool and a
reminder to study a little every day.
Additional
resources:
Barnes & Noble has
a quick guide to C++ called C++ Programming: In Easy Steps that
might be of interest. The best part of
it is that it is under $10! It provides
a quick summary of the language, using a paragraph instead of a chapter section
to explain the rules for creating legal variable names, for instance. Given the price, it is worth checking
out. Another interesting book which our
library has (or used to have ☹)
is Expert
C Programming: Deep C Secrets, by Peter van der Linden. This is a great second book on programming,
which explains some of the intricacies of C and C++ that tend to get glossed
over or described incorrectly in an introductory text.
There are many other
interesting and useful resources available to aid the beginning C++
programmer. If you would like other
specific recommendations, don’t hesitate to ask.
Additional
unique aspects of the course:
This course is very
hands on. Students learn programming by
doing it, and the course grading system reflects this emphasis.
Emergency Evacuation:
Since I
don’t know where you are living, it is up to you to know the evacuation
procedures for your dorm or residence.
If you are on campus, the procedures are described here: http://www.oneonta.edu/security/documents/EmergencyEvacuationProcedures.pdf.
Required ADA
Statement:
Students Diagnosed with
a Disability—All individuals who are diagnosed with a disability are protected
under the Americans with Disabilities Act, and Section 504 of the
Rehabilitation Act of 1973. As such, you may be entitled to certain
accommodations within this class. If you are diagnosed with a disability,
please make an appointment to meet with Accessibility Resources, 133 Milne
Library, ext. 2137. All students with the necessary supporting documentation
will be provided appropriate accommodations as determined by the Accessibility
Resources Office. It is your responsibility to contact Accessibility Resources
and concurrently supply me with your accommodation plan, which will inform me
exactly what accommodations you are entitled to. You will only receive
accommodations once you provide me with an Accessibility Resources
accommodation plan. Any previously recorded grades will not be changed.
Addendum added by the provost
Campus Resources
Academic Department Information
·
Department
Phone Number: (607) 436-3708
·
Department
Email Address:
·
Department
Location: 274 Fitzelle
·
Accessibility Resource Center
·
Office of Equity and
Inclusion
Course Policies
See the SUNY Oneonta Course Policies and Procedures web page.
Campus “Actions for Safety”
Requirements and Guidance
See the Actions for Safety
campus web site.