CSCI 111 with Dr. J, California State University, Chico

CSCI 111: Programming and Algorithms I
EECE 135: Algorithms and Programs for Engineers


Registration/Schedule Information


Term/Year
 

Class
Number

 

 Section 
 

 Act 
 

 Days 
 

 Time 
 

 Room 
 

 Instructor 
 
Fall 2007  
CSCI 111-01  DIS  MWF 1300-1350   OCNL 254   Juliano
  4789
CSCI 111-02  ACT  M 1400-1450   OCNL 244   Juliano
  4790
CSCI 111-03  ACT  T 1400-1450   OCNL 244   Juliano
  4791
CSCI 111-04  ACT  R 1400-1450   OCNL 244   Juliano
Fall 2007  
EECE 135-01  DIS  MWF 1300-1350   OCNL 254   Juliano
  6784
EECE 135-02  ACT  M 1400-1450   OCNL 244   Juliano
  6785
EECE 135-03  ACT  T 1400-1450   OCNL 244   Juliano
  6821
EECE 135-04  ACT  R 1400-1450   OCNL 244   Juliano
Spring 2007  
CSCI 111-05  DIS  MWF 1000-1050   SSKU 120   Juliano
  4159
CSCI 111-06  ACT  M 1100-1150   OCNL 244   Juliano
  4160
CSCI 111-07  ACT  W 1100-1150   OCNL 244   Juliano
  4161
CSCI 111-08  ACT  F 1100-1150   OCNL 244   Juliano
Spring 2007  
EECE 135-01  DIS  MWF 1000-1050   SSKU 120   Juliano
  4222
EECE 135-02  ACT  M 1100-1150   OCNL 244   Juliano
  4364
EECE 135-03  ACT  W 1100-1150   OCNL 244   Juliano
  4365
EECE 135-04  ACT  F 1100-1150   OCNL 244   Juliano
               


Prerequisites

At least one year of high school algebra

Description

A first-semester programming course, providing an overview of computer systems and an introduction to problem solving, object-oriented software design, and programming. Coverage includes the software life cycle, how to split large programs into segments, as well as algorithms and their role in software design. Students are expected to design, implement, and test a number of programs. 2.0 hours discussion, 2.0 hours activity. CAN CSCI 22.


Required Text

Click for textbook website ...

C++: How to Program, 6/e
H.M. Deitel & P.J. Deitel, 2008.
Prentice Hall.
ISBN 0-136-15250-3

See textbooks from prior semesters ...


Additional Requirements

 
We will be using Clickers (Student Response Systems) in this class. Details of Clicker use will be covered during the first week of classes. For your reference, check out Dr. J's Clicker Reference Page, and Dr. J's Clicker Sessions Page ...
 
All programming assignments must be designed to run on the College of ECC Unix servers. To setup an account in the College of ECC Unix server, see Elbert Chan (echan@csuchico.edu) in OCNL 249, Monday through Friday, 3:30-5:00pm. The College of ECC Unix server's name is ect-unix.ecst.csuchico.edu, or you can also use tiglon.ecst.csuchico.edu. Alternately, the CSCI Department's Linux server that is accessed from our labs in OCNL 244 is called jaguar.ecst.csuchico.edu.
 
 
Students officially registered for the course will have their own Chico State Connection (CSC Portal) account.
 
 
Students are responsible for regularly checking their WebCT Vista account (automatically generated through the CSC Portal) to access an up-to-date on-line calendar of events, current scores, on-line quizzes, etc.
 
 
Lab sessions will meet weekly in OCNL 244, the Department of Computer Science's Linux Lab (a.k.a. the thin client lab). During lab, these thin clients will be used to connect to jaguar.ecst.csuchico.edu, the College of ECC Linux server, which runs Slackware. The desktop environment running on the thin clients is KDE.

Files saved on any of the ECC servers can be accessed remotely, provided students have downloaded and installed an SSH client and an SFTP client application on their local machine.

 
 
Students are encouraged to learn and use Bloodshed Dev-C++, a FREE, full-featured Integrated Development Environment (IDE) for the C/C++ programming language that uses Mingw port of GCC (GNU Compiler Collection) as it's compiler. Dev-C++ can also be used in combination with Cygwin or any other GCC based compiler. Use of Dev-C++ facilitates application development on the PC platform while requiring minimal effort to get the same applications to run on a Unix server.



Course Objectives

The objectives of this course are to:

  1. help students learn and adopt a disciplined approach to algorithm design and implementation, programming, and widely accepted software engineering methods;
  2. facilitate students' understanding of basic principles and techniques in the fast-maturing field of computer science; and
  3. teach students proper use of programming tools to develop correct, efficient, and well-structured programs and to build a foundation for learning more advanced programming concepts and paradigms.


Course Outcomes

Upon successful completion of this course, the student shall be able to:

  1. use a disciplined approach to algorithm design and implementation, programming, and widely accepted software engineering methods;
  2. demonstrate proficiency in the basic principles and techniques in the fast-maturing field of computer science; and
  3. demonstrate proper use of programming tools to develop correct, efficient, and well-structured programs illustrative of a foundation for learning more advanced programming concepts and paradigms.


Relationship of Course to Program Objectives

This course supports the achievement of the following program objectives:


Relationship of Course to Program Outcomes

This course supports the achievement of the following program outcomes:



Grade Evaluation

This course is designed to give students an equal opportunity of exposure to both Theory and Practice. Students are expected to demonstrate proficiency on both the theoretical and practical aspects of this course.


  Theoretical Component  (50%)  
 
   10%    Clicker Participation   
   15%    At least six (in-class or online) quizzes   
   15%    Exam 1   
   15%    Exam 2   
   15%    Exam 3   
   30%    Final Exam   

  Practical Component  (50%)  
 
   100%    Programming Assignments   
 

Students are required to earn a C- (70%) or better in both the Theoretical and the Practical components; otherwise, the minimum of the scores of the two components will be used to calculate the student's final grade.


Final Grades

Final grades shall be expressed as a percentage of the maximum possible score of all evaluated materials. Letter grades will be given according to the following scheme:


  Real Interval  
 

  Letter Grade  
 

  University Definition  
 
[96,100] A    Superior Work
[90, 96) A-
[87, 90) B+   Very Good Work
[83, 87) B 
[80, 83) B-
[77, 80) C+   Adequate Work
[73, 77) C 
[70, 73) C-
[66, 70) D+   Minimally Acceptable Work  
[60, 66) D 
[ 0, 60) F    Unacceptable Work
     


Note:  It is Dr. J's policy not to assign a final grade of D or D+ to graduate students. Hence,
graduate students with a class standing less than C- (70%) earn a final grade of F.



General Policies

Dr. J has some general policies (see http://www.ecst.csuchico.edu/~juliano/Teaching/Policies.html) that apply to all courses he teaches. Students are expected to read and understand these policies upon registration of this course. What follows below are course-specific policies.



Programming Assignments

No collaboration policy: Students are expected to submit their own solutions to all their programming assignments.

WARNING: Don't even THINK about cheating in this class! Each semester, several students in this class either earn a final grade of F or are recommended for expulsion from Chico State for violating the course's no collaboration policy. This is not because CSCI 111 / EECE 135 students are any less ethical or honest than students in other classes; rather, it is because Dr. J uses MOSS (Measure Of Software Similarity, see http://www.cs.berkeley.edu/~aiken/moss.html) to automatically check for similar programming assignment solutions. MOSS is an Internet service that allows instructors to submit a set of programs for comparison. It is used by more than 1,200 users worldwide -- representing both individual instructors and entire departments. Each semester, several students think the use of MOSS is a bluff or that they can outsmart MOSS --- they are always proven wrong. (See http://www.ecst.csuchico.edu/~juliano/csci111/Lab/MOSS/ for sample output provided by MOSS.) Consider yourself warned.

The instructor is at liberty to lower a student's final grade a minimum of the next lower grade (e.g. a 'B' becomes a 'B-') and a maximum of a whole letter grade (e.g. a 'B-' becomes a 'C-') for each programming assignment that student did not submit. Additionally, students seeking help during scheduled office hours are expected to demonstrate the appropriate level of understanding of the programming assignment prior to coming during office hours. Questions from students that demonstrate a lack of effort in understanding and solving programming assignments will definitely not be entertained.

(For your reference, you may refer to Dr. J's Policies for Programming Assignments and WebCT Vista Programming Assignments Rubric.)



Tentative Schedule

The following tentative schedule is subject to change without notice:


  Week  
 

  Chapter  
 

  Coverage/Comments  
 
1 1   Introduction to Computers, the Internet and World Wide Web  
2 2
3
  Introduction to C++ Programming  
  Introduction to Classes and Objects  
3 3
4
  Introduction to Classes and Objects, continued ...  
  Control Statements: Part 1  
4 4   Control Statements: Part 1, continued ...  
  Exam 1, class time
5 5   Control Statements: Part 2  
6 6   Functions and an Introduction to Recursion  
7 6

7
  Functions and an Introduction to Recursion, continued ...  
    --  Plus: MSwin project files and *nix makefiles
  Arrays and Vectors  
8 7   Arrays and Vectors, continued ...  
  Exam 2, class time
9 8   Pointers and Pointer-Based Strings  
    --  Plus: command-line arguments
10 9   Classes: A Deeper Look, Part 1  
11 10
11
  Classes: A Deeper Look, Part 2  
  Operator Overloading; String and Array Objects  
12 11   Operator Overloading; String and Array Objects, continued ...  
  Exam 3, class time
13 12   Object-Oriented Programming: Inheritance  
14 13   Object-Oriented Programming: Polymorphism  
15 19   Searching and Sorting  
16     Final Exam, as scheduled (see Class Schedule)