Computer Science 110/L - Fall 2009

Introduction to Algorithms and Programming

 

Instructor:                    Bob Lingard

 

Office:                         JD 4417

 

Office Phone:             677-3825

 

Email Address:            rlingard@csun.edu

 

Web URL:                   http://www.ecs.csun.edu/~rlingard

 

Office Hours:              Monday 2 - 3 PM, Wednesday 2 – 3 PM & 5 – 6 PM, and by appointment

 

Prerequisites:              Grade of C or better in Math 102 or 104 or 105 or Math 150A or MPT I score of at   

least 27 or passing score on or exemption from the ELM

 

Corequisites:               Comp 110L, Math 104 or 105 or 150A

 

Text:                            Introduction to JAVA™ Programming, Seventh Edition, by Y. Daniel Liang,

Pearson/Prentice Hall, 2009 (ISBN 10:13-604258-9, ISBN 13: 978-0-13-604258-7)

 

Ticket# 14539             Lecture meets MW  11:00 AM – 12:15 PM in JD 2210

Ticket# 14540             Lab meets MW  12:30 PM – 1:45 PM in JD 2210

 

Course Description

 

Introduction to algorithms, their representation, design, structuring, analysis and optimization.  Implementation of algorithms as structured programs in a high level language.

 

Course Objectives

 

A successful student will be able to:

 

1.    Demonstrate knowledge of computers and operating systems, including the editing and compilation processes.

2.    Translate human-readable algorithms represented by pseudo code, flowcharts or flow block diagrams into Java.

3.    Write and test Java programs using the 4 fundamentals of programming: sequence, choice, loop, and methods.

4.    Construct programs that require several methods and good knowledge of passing parameters.

5.    Demonstrate the knowledge of the basic steps of software development: problem statement, program development, testing and documentation.

6.    Solve problems with one and two dimensional arrays.

7.    Use basic sorting and searching methods.

8.    Apply the class String.

9.    Read and write text files.  Demonstrate practical use of Exception Handling.

10.  Recognize the role of Object Oriented Programming in software development. Run the examples and exercises studied in the course.

11.  Understand the ideas of Polymorphism and Inheritance. 

 


SPECIAL NOTE

 

For the past 10 years the CSU system has suffered chronic under-funding.  This year, because of the state economic crisis, the budget cuts ($584 million) are the worst in decades.  The CSU administration is attempting to manage these cuts by dramatically increasing student fees and by furloughing almost all University employees, including faculty, staff, and administrators.   A furlough means mandatory un-paid days off for employees; there are 18 of these this year for the faculty, nine per semester.  As a professor, I will give you advance notice of the days when class will be canceled because of furloughs. 

 

For students this means that on some days the campus may be closed.  The library may have shorter hours and many campus support services are likely to be decreased or eliminated. It will, for example, be more difficult to get signatures to meet deadlines. Additionally, some classes you need may have been cut from the class schedule or are full.  These cuts have consequences, especially for you. 

 

Grading

 

The same grade will be given for both the lecture and laboratory portions of the course.  An absolute grading system will be used, where 90% is required for an A, 80% for a B, 70% for a C, 60% for a D, and anything below 60% is failing.  Pluses and minuses will be given for grades within 3 percentage points of the dividing marks.  For example, a final total which is 80% or more but less than 83% would correspond to a letter grade of B-, a total of 77% or more but less than 80% would correspond to a C+, etc.  The final grade will be based on the following:

 

                                    Quizzes (11)                                        10%

Midterm Exams (2)                             20%

                                    Final Exam                                          20%

                                    Lab Programming Projects                 40%

                                    Homework                                          10%

                                   

Late work will be accepted without penalty only if some compelling reason is provided (preferably in advance) justifying the lateness.  Without such a justifiable excuse, late work will be penalized 5% for each calendar day that it is late.

 

Plagiarism and Academic Dishonesty

 

Plagiarism (intentionally or knowingly representing the words, ideas, or work of another as one’s own) or any other form of academic dishonesty will not be tolerated.  Students who are guilty of such dishonesty will receive no credit for the given assignment or exam and will not be allowed the opportunity to redo the work in question.

 

Quizzes & Exams

 

Quizzes will consist of several multiple choice questions on the reading material.  There will be a quiz nearly every week.  The lowest quiz grade will be dropped.  The quizzes will be given during the lab sessions.  The exams may be open book or closed book, or a combination of the two.

 

Lab Programming Projects

 

Lab projects are an important part of the course and will be given to apply and reinforce the material discussed in the lectures.  Discussion and collaboration with other class members on individual assignments is permitted, and even encouraged, to the extent that said collaboration is a fair and equitable exchange of ideas.  That is, one individual should not be doing all the work and sharing it with others.  It is permissible to ask other students for help, but it is not permissible to copy the results of others.  If several students collectively solve a problem, each should write up the results in his or her own words.

 

Tentative Outline

 

1.            Introduction to computing

What is programming?

Computer architecture and operating systems

Java and The World Wide Web

2.            Basic programming concepts

Identifiers and variables

Assignment statements

Constants, data types, and numeric operations

Programming style

Debugging

3.            Selections

Boolean data type and operations

if statements

switch statements

Conditional expressions

4.            Loops

The while loop

The do-while loop

The for loop

5.            Methods

Defining a method     

Invoking (calling) a method

Passing parameters

6.            Arrays

Declaring arrays

Passing/returning arrays to/from methods

Searching and sorting arrays

Two-dimensional and multidimensional arrays

7.            Introduction to Objects and Classes

Defining classes for objects

Constructors

Reference variables

Passing objects to methods

8.            Strings and Text I/O

The String Class

The Character Class

The File Class

File input and output

9.            The Object-Oriented Paradigm

The scope of variables

The this reference

Class abstraction and encapsulation

Object-oriented thinking

Inheritance and polymorphism

10.          Exception Handling

Overview of exception handling

Advantages of exception handling

11.          Binary I/O

How I/O is handled in Java

Text I/O vs. binary I/O

12.          Recursion

Problem solving using recursion

Recursion vs. iteration