CSIS 2610: Programming and Problem Solving

CSIS 2610 Syllabus
Instructor:
Dr. John R. Sullins
Office hours: MW 9:30-10:30, MW 1:30-2:00, TTh 11:00-11:30, or by appointment
Office: 333 Meshel Hall
Phone: 742-1806
Email: john@cis.ysu.edu
Web site: http://cis.ysu.edu/~john/
(Check this site regularly, as announcements, assignments, and notes will be posted here)

Objectives:
This course is meant to introduce you to
  1. programming concepts (program control flow, functions, and data types),
  2. principles of structured programming (including modular design, debugging, and documentation),
  3. the C/C++ programming language and UNIX environment.

Prerequisite:
CSIS 1590: Survey of Computer and Information Sciences, or some equivalent experience with computers. It is assumed that you are familiar with basic computing concepts (manipulating files and directories, utilizing Web sites, etc.).

Textbook:
A First Book of C++, Vol. 2, Gary Bronson, Brooks/Cole Publishing.

Grading:
Programming assignments 40% (6-7 biweekly assignments)
Exam 1 12% Wed., 2/7
Exam 2 12% Wed., 3/7
Exam 3 12% Wed., 4/11
Final Exam 24% Mon., May 7, 8-10 (section 0622)
Mon., May 7, 1-3 (section 0625)
            Last day to withdraw with a "W": Saturday, 3/24

Programming Assignments:
In general, programming assignments will be handed out every other week (on Wednesday), and will be due one or two weeks later. On occasion, a design document may be required earlier as part of the assignment.

You may use the UNIX tools available in the labs to do these assignments (accounts and instructions will be provided the first week), or you may do them at home if you have a C++ compiler (however, your code must compile and run in UNIX).

Late assignments will be penalized at 10% per working day, and no assignments will be accepted after solutions are posted (generally one week after the due date).

Work on these assignments must be your own (see the policy sheet for more details).

Lab work:
Some of the Friday labs will be used to introduce you to the Unix environment that most C++ programs are run in, and for short demonstrations and debugging exercises related to the current topic. The remaining lab time will be spent working on the homework assignments. However, note that you will be expected to do most of the work on the assignments outside of class/lab time.

Example programs:
I will be putting example programs for specific lectures on my web site. You should download and print them before that lecture, as it will be much easier to understand the lecture if you are not worrying about copying the program from the chalkboard at the same time.
Tentative Calendar
WEEK LECTURE LAB CHAPTER
1/17-1/19 Introduction to program design, Basic form of C programs Introduction to labs (editing, compilation, and mail) 1.1-1.5
1/22-1/26 Data types, Variables and Assignment, Output with cout, Prompting and input with cin Introduction to debugging techniques 2.1-3.1
1/29-2/2 Arithmetic and incremental operators, Calling built-in functions, Design and documentation UNIX commands for file manipulation 3.2-3.5
2/5-2/9 Relational expressions, if/else statements
EXAM 1 Wednesday
Debugging if statements 4.1-4.2
2/12-2/16 Nested if statements, Logic operators, switch statements History, scripting, file protections 4.3-4.7
2/19-2/23 while loops, Sentinel loops, Running totals Debugging while loops 5.1-5.2
2/26-3/2 Counter loops using for, Nested loops
Function declarations
Using UNIX debugging tools 5.3-5.5, 6.1
3/5-3/9 Returning data from functions, function design
EXAM 2 Wednesday
Debugging functions, function drivers 6.2
3/19-3/23 Global and local scoping, Static variables, Reference parameters, Design and documentation using functions Introduction to separate compilation 6.3-6.7
3/26-3/30 Arrays, Sequential and random access, Arrays as parameters Debugging programs with arrays 7.1-7.3
4/2-4/6 Multidimensional arrays, Search, and Sorting Sorting examples and programs 7.4-7.7
4/9-4/13 Pointers, indirect manipulation, and pointer parameters
EXAM 3 Wednesday
Examples of pointers and addressing 8.1-8.4
4/16-4/20 Strings and String functions, arrays of strings Makefiles and separate compilation 9.1-9.2
4/23-4/27 File processing, Records Debugging programs with files 14.1-14.2, 10.1-10.2
4/30-5/4 Introduction to Object-Oriented Programming Object-Oriented Programming examples 11.1-11.4