CSCI 116 -01, -02 Fundamentals of Programming Syllabus

Fall 2021

 

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

 

 

Programming Project #1

 

Last day to add a full semester course

QUIZ 2

Sept 6-10

Labor Day, no classes

Classes resume

Programming Project #2

 

QUIZ 3

Sept 13-17

 

 

Programming Project #3

 

QUIZ 4

Sept 20-24

TAP certification begins

 

Programming Project #4

 

QUIZ 5

Sept 27-Oct 1

 

 

Programming Project #5

 

QUIZ 6

Oct 4-8

 

 

EXAM #1

Another Sample

Programming Project #6

 

College closes after last class

QUIZ 7

Oct 11-15

BREAK

BREAK

Classes Resume

Interim progress reports due

QUIZ 8

Oct 18-22

 

 

Programming Project #7

 

Last day to drop a course

QUIZ 9

Oct 25-29

 

 

Programming Project #8

 

QUIZ 10

Nov 1-5

 

 

Programming Project #9

 

DST ends Sunday…set clocks back

QUIZ 11

Nov 8-12

Spring pre-enrollment

 

Programming Project #10

 

QUIZ 12

Nov-15-19

Last day to make up incompletes

 

EXAM #2

Programming Project #11

 

QUIZ 13

Nov 22-26

 

College closes after last class

Last day to withdraw

BREAK

BREAK

BREAK

Nov 29-Dec 3

Classes resume

 

Programming Project #12

 

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:

Assignments are considered due by the beginning of class on their due date, and any turned in after that time will be considered late.  Late assignments will be penalized 50% for the first week after the due date.  Any assignment later than a week will be recorded as a 0.  All assignments must be turned in by the last day of classes for them to count toward the course grade.  You should plan to take all the tests and the final exam when they are scheduled.  Any makeups will be allowed only for legitimate, school-approved excuses, and should be arranged with the instructor as soon as possible after you discover you can’t attend the exam (before the exam is given whenever possible).  In any case, all work must be completed by the last class, including any makeup exams.  Exams missed for unexcused absences, or exams not made up by the last day of classes will be recorded as a zero grade.

 

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

 

Other Resources

·                  Academic Advisement

·                  Accessibility Resource Center

·                  Student Learning Center

·                  Milne Library

·                  Counseling 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.