CS13011 Computer Science IA: Procedural Programming

& CS13012 Computer Science IB: Object Oriented Programming

Spring 2017


Instructor: Xiang Lian

Office Location: Mathematics and Computer Science Building, Room 264

Office Phone Number: (330) 672-9063

Web: http://www.cs.kent.edu/~xlian/index.html

Email: xlian@kent.edu

Course: CS IA: Procedural Programming & CS IB: Object Oriented Programming

Prerequisites: MATH 11010 or MATH 12001 with a minimum grade of C

Time: 11:00am - 12:15pm, TR

Classroom Location: Liquid Crystals Materials Science Building (LCM), 101

Course Webpage: http://www.cs.kent.edu/~xlian/2017Spring_CS13011_CS13012.html


Instructor's Office Hours: Tuesday and Thursday (1:30pm ~ 4:30pm); or by appointment


Lab Instructors: Chao Ma (cma1@kent.edu), Salem Othman (sothman@kent.edu), and Sudeep Tuladhar (stuladha@kent.edu)


Lab Times:




Section No. Day/Time Location Instructor

001 M 09:55 am - 11:50 am MSB 139 Salem Othman

002 M 02:15 pm - 04:10 pm MSB 139 Sudeep Tuladhar

003 F 02:15 pm - 04:10 pm MSB 139 Salem Othman

004 M 09:55 am - 11:50 am MSB 162 Chao Ma

005 M 02:15 pm - 04:10 pm MSB 162 Chao Ma

006 F 02:15 pm - 04:10 pm MSB 162 Sudeep Tuladhar


CS IB (Starting from March 17):


Section No. Day/Time Location Instructor

014 M 09:55 am - 11:50 am MSB 162 Salem Othman

015 M 02:15 pm - 04:10 pm MSB 162 Chao Ma

016 F 02:15 pm - 04:10 pm MSB 162 Salem Othman

017 W 02:15 pm - 04:10 pm MSB 162 Chao Ma

018 F 07:45 am - 09:40 am MSB 162 Sudeep Tuladhar



Lab URL: http://vega.cs.kent.edu/~mikhail/classes/csi/Labs/

Tentative Lab Schedule: http://www.cs.kent.edu/~xlian/course_archive/2017Spring_CS13011_CS13012/schedule.txt


Enrollment/Official Registration of this Class

The official registration deadline for this course is Jan. 22, 2017. University policy requires all students to be officially registered in each class they are attending. Students who are not officially registered for a course by published deadlines should not be attending classes and will not receive credit or a grade for the course. Each student must confirm enrollment by checking his/her class schedule (using Student Tools in FlashLine) prior to the deadline indicated. Registration errors must be corrected prior to the deadline.


For registration deadlines, enter the requested information for a Detailed Class Search from the Schedule of Classes Search found at:



After locating your course/section, click on the Registration Deadlines link on the far right side of the listing.


Last day to withdraw: Mar. 26, 2017



Problem Solving With C++, Walter J. Savitch, Pearson, 2014, Ninth Edition, ISBN: 978-0133591743. The textbook is required. No access code is needed. Older editions may be allowed, check with me for details.



Catalog Description

The purpose of the CS IA course is to learn computer science concepts including algorithm development and problem solving strategies focused on programming abstractions. High-level programming concepts including variables, branching, iteration, and functions. The purpose of the CS IB course is to learn high-level programming concepts including introduction to recursion and an introduction to object oriented-concepts.

The goal of the course is to familiarize the students with programming in a high-level object-oriented language (C++) while studying the main constructs of C++. The students will learn to translate algorithms into correct programs as well as to debug, document and maintain the code.

The C++ constructs covered include: conditional and loop statements, functions, arrays, pointers, object classes, dynamic memory allocation.

The course contains two parts: A and B. To be allowed to enroll in part B, students need to complete part A with the grade of C or above.


Tentative Schedule


Topics & Book Chapters

Examples & Notes1

Week 1 (Jan. 17)

Introduction, history of C++, C++ program outline [1.1-1.3]


Week 1 (Jan. 19)

First program, development environment [1.3-1.4]; Variables, identifiers, assignment, input/output [2.1-2.2]

hello world, area


Lab 1: First Program

Week 2 (Jan. 24)

Types, expressions, more on assignment [2.3]


Week 2 (Jan. 26)

Boolean algebra, boolean and relational operators, branching constructs [2.4, 3.1-3.2]

order, toll, largest, digits


Lab 2: Branching

Week 3 (Jan. 31)

Iterative constructs: while, do-while, for [2.4, 3.3-3.4]

max, odometer, countdown

Week 3 (Feb. 2)

Programming style, comments, naming programs [2.5, 4.2]; Predefined functions (library functions) [2.5, 4.2]

doghouse, equation, time, random


Lab 3: Looping

Week 4 (Feb. 7)

Quiz 1


Programmer-defined functions, local and global variables, call-by-value [4.3,4.5]

add1func, add1funcbottom


Week 4 (Feb. 9)

Separate files, independent compilation, header files [12.1]

add1 in separate files: add1.cpp, add1.h, add1test.cpp


Lab 4: Predefined Functions

Week 5 (Feb. 14)

void-functions, predicates, call-by-reference [5.1, 5.2, 14.1]

stack example, swap'em, valueVSreference, predicated greeting

Week 5 (Feb. 16)

Defining arrays, arrays with for-loops, passing arrays as arguments [7.1-7.2]

initialize array, pass as parameter, testconst


Lab 5: Programmer-Defined Functions, Call-by-Value , Multiple Files

Week 6 (Feb. 21)



Week 6 (Feb. 23)

Strings [8.1-8.2]

addRemove, asArray, concatenation, ctypedemo, find, findAll, parstring, stats, stringcomparison


Lab 6: Call-by-Reference, Arrays

Week 7 (Feb. 28)

Quiz 2


File input/ouput [6.1]


Week 7 (Mar. 2)


infile.dat, sum of three numbers (1, 2, 3), setw, printfile, printFileExtr, toIntAndBack


Week 8 (Mar. 7)


Review for Final Exam 1

Week 8 (Mar. 9)

Final Exam 1


Week 9 (Mar. 14)

Structures [10.1]

simple, complex, initialization, passing as parameters, using with arrays, CD account

Week 9 (Mar. 16)

Classes [10.2]

simple, complex, constructors, inline functions, friend functions


exercise on object syntax

Time: dinner.cpp, time.cpp, time.h, usertime.cpp


Lab 7: Strings, File I/O

Week 10 (Mar. 21)

Pointers [9.1]

arrayISpointer, intro, losepointer, objectpointers, pointerArithmetic, questions



Week 10 (Mar. 23)


Dynamic memory allocation [9.2]

Last Day to Withdraw: 3/26/2017


functions, newdel1, newdelarr1, newDelArrFunc, newdelfun, problem.loosepointer, problem.memoryleak, questions


Lab 8: Structures

Week 11 (Mar. 28)


Spring Recess: Mar. 27-Apr. 2; No Classes

Week 11 (Mar. 30)

Week 12 (Apr. 4)

Objects with dynamically allocated members [11.4]

arrayAssign, arrayCopy,

arrayDestructor, assign, copycontsr, destructor, questions,


Week 12 (Apr. 6)

Quiz 3


Lab 9: Classes

Week 13 (Apr. 11)

Vectors [8.3, 18.1]

func, growShrink, invalidation, iterators,

objects, simple, stringSorting,


Week 13 (Apr. 13)

Multidimensional arrays, vectors of vectors [7.4]

fill, jaggedVector, list,

listVector, multTable


Lab 10: Dynamic Memory Allocation

Week 14 (Apr. 18)

Quiz 4


Week 14 (Apr. 20)

-- No class

Lab 11: Objects with Dynamically Allocated Members

Week 15 (Apr. 25)

Namespaces [12.2]

classDef, exampleStd, simple

Week 15 (Apr. 27)

Recursion [14.1]

factorial, reverse, verticalIterative, verticalRecursive


Lab 12: Multidimensional Arrays/Vectors of Vectors (Optional; Bonus: 10 points)



Week 16 (May 2)

Diagrams [OMT, UML]


Week 16 (May 4)

Automatic code documentation [doxygen main page]

XML parser documented with Doxygen


Review for Final Exam 2


Course Evaluation (Please bring 2B pencil)

Week 17 (May 8-14)

Final Exam 2 (12:45pm ~ 3:00pm, Tuesday, May 9)



Academic calendar: https://www.kent.edu/sites/default/files/academic-calendar-2014-2018_0.pdf

Final exam schedule: http://www.kent.edu/registrar/spring-final-exam-schedule

Introduction to Microsoft Visual C++ 2015.
Microsoft Visual C++ Express is free to

Quiz/Exam Samples: example quiz, example CSIA exam, example CSIB exam, final exam, consultation times, review topics

Mac Users: Please use the virtual box to install Windows virtual PC, and install Visual Studio in the virtual machine. You can get both Windows 10 and virtual box from the following URL: https://kent.onthehub.com/.

NOTE: Quiz/Exam dates and deadlines are tentative. Exact dates will be announced in class!!!

Scoring and Grading



5 - Attendance

60 - 6 Lab Assignments (10 points each)

20 - 2 Quizzes (10 points each)

100 - Final Exam 1




5 - Attendance

60 - 6 Lab Assignments (10 points each) [the last lab assignment is a bonus; final lab score you can get = total points * 60 / 50]

20 - 2 Quizzes (10 points each)

100 - Final Exam 1


The sum of the possible scores on all assignments is considered 100% and your final course grade will be determined as follows:


100-93% -- A

92-90 -- A-

89-87 -- B+

86-83 -- B

82-80 -- B-

79-77 -- C+

70-76 -- C (note that there is no C- grade)

69-67 -- D+

66-60 -- D

59-0 -- F


You need to get at least C grade in CS IA (2 credits) to be allowed to enroll in CS IB (2 credits).


There will be no curve at the end of the course. Your score will not be rounded up: if you get 66.99% you will get a D not a D+. Thus, you should always be able to determine how well you are doing in the course.


Lecture Attendance Policy

Attendance in the lecture is mandatory. Students are expected to attend lectures, study the text, and contribute to discussions. You need to write your name on attendance sheets throughout the course, so please attend every lecture.

Students are expected to attend all scheduled classes and may be dropped from the course for excessive absences. Legitimate reasons for an "excused" absence include, but are not limited to, illness and injury, disability-related concerns, military service, death in the immediate family, religious observance, academic field trips, and participation in an approved concert or athletic event, and direct participation in university disciplinary hearings.

Even though any absence can potentially interfere with the planned development of a course, and the student bears the responsibility for fulfilling all course requirements in a timely and responsible manner, instructors will, without prejudice, provide students returning to class after a legitimate absence with appropriate assistance and counsel about completing missed assignments and class material. Neither academic departments nor individual faculty members are required to waive essential or fundamental academic requirements of a course to accommodate student absences. However, each circumstance will be reviewed on a case-by-case basis.

For more details, please refer to University policy 3-01.2: http://www.kent.edu/policyreg/administrative-policy-regarding-class-attendance-and-class-absence.

Exam Policy

There are two exams. Fist held in the final week of CSIA. The second is held during the finals week of the semester. All exams are closed book, closed notes, and must be individual work. It is expected that you take each exam at the scheduled time, unless you make prior arrangements with me, or have a documented illness (in which case I expect you to contact me as soon as possible). You will be tested on the material we covered in class. The textbook or the slides alone may not be sufficient for adequate preparation for the exams.

No make-up quiz/exam will be given except for university sanctioned excused absences. If you miss a quiz/exam (for a good reason), it is your responsibility to contact me before the quiz/exam, or soon after the quiz/exam as possible.


The lectures are complemented by lab sessions. The sections of this course differ in the time of their lab sessions. The lab session is conducted by a lab instructor. Lab attendance and participation is required. Lab sessions are an integral part of the course and lab assignments constitute a significant part of the course grade. The lab policies are stated on the lab website and are to be followed for the success in the lab.

Academic Dishonesty Policy

Cooperation on Programming Projects (Labs). You are allowed to discuss projects and solutions with your peers outside the lab. However, you should code the projects individually. This means that you should not look at other students' programs either on the screen or in printouts. You should not copy other students' solutions. Joint programming, even in pseudo-code, is not allowed. Cooperation during labs is not allowed. If you have a question during a lab, ask your lab instructor. Do not ask your classmate: you are distracting him/her, you may be getting an incorrect answer and you may be inadvertently involving him/her in joint work.

You should be careful not to give others access to your code. This means that you should not keep your program in a publicly accessible directory, you should not leave your computer unattended, and you should not forget to pick up your printouts.

The University expects a student to maintain a high standard of individual honor in his/her scholastic work. Unless otherwise required, each student is expected to complete his or her assignment individually and independently (even in the team, workload should be distributed to team members to accomplish individually). Although it is encouraged to study together, the work handed in for grading by each student is expected to be his or her own. Any form of academic dishonesty will be strictly forbidden and will be punished to the maximum extent. Copying an assignment from another student (team) in this class or obtaining a solution from some other source will lead to an automatic failure for this course and to a disciplinary action. Allowing another student to copy one's work will be treated as an act of academic dishonesty, leading to the same penalty as copying.

University policy 3-01.8 deals with the problem of academic dishonesty, cheating, and plagiarism. None of these will be tolerated in this class. The sanctions provided in this policy will be used to deal with any violations. If you have any questions, please read the policy at http://www.kent.edu/policyreg/administrative-policy-regarding-student-cheating-and-plagiarism and/or ask.

Students with Disabilities

University policy 3-01.3 requires that students with disabilities be provided reasonable accommodations to ensure their equal access to course content. If you have a documented disability and require accommodations, please contact the instructor at the beginning of the semester to make arrangements for necessary classroom adjustments. Please note, you must first verify your eligibility for these through Student Accessibility Services (contact 330-672-3391 or visit www.kent.edu/sas for more information on registration procedures).

Statements for the Course

This course may be used to satisfy the University Diversity requirement. Diversity courses provide opportunities for students to learn about such matters as the history, culture, values and notable achievements of people other than those of their own national origin, ethnicity, religion, sexual orientation, age, gender, physical and mental ability, and social class. Diversity courses also provide opportunities to examine problems and issues that may arise from differences, and opportunities to learn how to deal constructively with them.


This course may be used to satisfy the Writing Intensive Course (WIC) requirement. The purpose of a writing-intensive course is to assist students in becoming effective writers within their major discipline. A WIC requires a substantial amount of writing, provides opportunities for guided revision, and focuses on writing forms and standards used in the professional life of the discipline.


This course may be used to fulfill the university's Experiential Learning Requirement (ELR) which provides students with the opportunity to initiate lifelong learning through the development and application of academic knowledge and skills in new or different settings. Experiential learning can occur through civic engagement, creative and artistic activities, practical experiences, research, and study abroad/away.




The instructor reserves the right to alter this syllabus as necessary.