CSCI  201: Software Development

Course Information & Syllabus

 

Spring 2004

 

WEBSITE: http://www-scf.usc.edu/~csci201s/

 

Instructor: Dr. K. Narayanaswamy

Office: Off Campus

Email: swamy@cs3-inc.com

Phone: (310) 337-3013

Office Hours:  By appointment or before/after class

 

Teaching Assistant:

 

Sheng Shi: shengs@usc.edu

Phone and Office: 213 740 4508; SAL 211

Office Hours: TBD

 

Shuchi Kulkarni: shuchi.kulkarni@usc.edu

Phone and Office: 213-740-6507; SAL 339

Office Hours: Wednesdays 3:00pm to 5:00pm

 

Lab Assistant and Grader

Neha Chaudhry; nchaudhr@usc.edu

Phone: TBD

 

 

 

Course Overview:

 

Prerequisites:  It is expected that all students have some familiarity with using C++ (classes, and some inheritance and derivation).  Further, it is mandatory to have taken a basic data structures course.  CSCI 102 satisfies these criteria.  Consult your undergraduate advisor if you do not satisfy these requirements.

 

CSCI 201 teaches you object-oriented software development by using the programming languages C++ and Java.   Programming examples will be drawn from the pool of common data structures that you have learned about in CSCI 102 and perhaps a few more.  Thus, the two major facets of this course are:

 

1.      Understanding object-oriented programming and design concepts, and how they influence “programming-in-the-large”, namely, the development of contemporary large-scale, production quality software systems by multi-person teams.

2.      It is impossible to understand programming principles without programming.  Thus, a major portion of this course is providing you a solid language foundation in C++ and Java, both of which are object-oriented and of increasing importance in present-day program development.

 

At the end of this course, you should not only be a competent C++ and Java programmer, you should have a good idea of how object-oriented software development works, and how it will continue to play a crucial role in the development of software in the future.

 

Topics covered will include the following: principle of encapsulation, principle of inheritance, their influence on software development, how C++ supports encapsulation, how C++ supports inheritance, overloading and templates, exceptions, Java and its relevance to the Internet and OO development, Java language features, graphical user interfaces and event programming, OO analysis and design techniques and how to apply them.

 

Course Schedule:

 

This class meets Tuesdays & Thursdays, between 5:00 p.m. to 6:20 p.m.  Each lecture will cover appropriate technical topics.  Please follow the provided Course Syllabus to know what the lecture topic will be, relevant readings, and assignment schedule.  You are completely responsible for making sure that you stay current on all course developments and on knowing how well the class is keeping up with the prescribed syllabus.

 

In addition to regular lectures, you are expected to sign up for a particular Lab session and attend that session.  The Lab session will stress practical details, aspects of the specific computing environment, and numerous programming minutiae that are hard to cover in a general lecture.  You should interact with one of the TAs and formulate a good working relationship with him or her.

 

Text Books:

 

There are two required textbooks for this course, and two recommended or optional books.  There will be reading assignments provided from these sources.  All reading assignments are described in the course syllabus.  Because of the nature of the schedule, reading assignments are particularly important in this course.  Before a session, skim the portions of the book, if you have time.  Certainly, after a class session, it is important to read the topic more carefully, and understand the discussions.

 

1.      (Required Text)  C++ Primer (3rd Edition), Lippman, Addison Wesley

2.      (Required Text) Java: How to Program, Deitel & Deitel, Prentice Hall

3.       (Optional) Effective C++, Meyers, Addison Weslen

4.      (Optional) Java in Practice, Warren & Bishop, Addison Wesley

 

Some parts of the texts are redundant (for example, both discuss the principles of OO programming).  In particular, 1 and 2 are reasonable reference books for C++ and Java respectively.  4 is a very good reference that covers the principles of object-oriented development using C++.  We refer to these books as T1, T2, T3, and T4 respectively in the course syllabus on Page 4.

 

Computing Resources:

 

All program assignments should be submitted using your student account on University resources – specifically the “submit” program.  Programs will be tested only on University resources.  Wherever and however you develop your programs, test them on the University’s UNIX infrastructure before submission.  Remember to give yourself enough time to port your program to the UNIX platform if you are developing it in Windows.  There are always subtle differences in behavior, and you are responsible for making sure that your programs work as specified on the platform specified – namely ALUDRA, which is a Sun workstation running UNIX.

 

In particular, all C++ programs must compile and work using SUN workstations and the GNU C++ compiler ( g++ ).  All Java assignments must compile and work using SUN workstations and the javac compiler.  NO EXCEPTIONS TO THIS RULE AND NO EXCUSES!!

 

Course Assignments:

 

There will be a combination of programming assignments (5 over the course of the semester), a mid-term examination, and a final examination. 

 

1.      Examinations: All examinations are open-book and open-notes.  The mid-term examination will include all topics done up to that point, and final examination will be comprehensive.  The examinations will be a mixture of objective questions and some questions requiring analysis or synthesis of small code segments.

Unless there is a documented dire emergency, examinations cannot be made up.  Please be mindful of this in planning your schedule.

 

2.      Programming/LAB Assignments: You will generally have at least 2 weeks to do each assignment.  An assignment will be given at the point where the course material for that assignment has already been covered.  Assignments can be accepted as late for up to 3 days after they are due.  However, you will lose 15% off the top per day that you are late – no negotiations on this, unless the circumstances are dire and documented.  For example, computing facilities going down on the date of an assignment is due will not qualify as “dire”!  Please plan and execute wisely.

 

Specific program grading criteria will be discussed in the LAB sessions.  It is important that your program work as specified, but it is also very important that it embody the principles that are being taught in this class – namely OO development.  Programs must be well written, easy to read and understand, and properly documented to get the full grade.

 

Course Grades:

 

Your overall course grade will be based on your performance in the different course assignments.  The relative weight of each course assignment is as follows:

 

·        Programming/LAB Assignments (8 X 5) = 40 % of your grade

·        Mid Term Examination  = 25 %

·        Final Examination = 35 %  (to be held during finals week in the designated room)

 

Academic Integrity:

 

Cooperation on programming assignments is healthy and unavoidable, even encouraged to the degree that you learn from such interactions and that real-world programming indeed involves teams of people working together.  But, plagiarism is explicitly forbidden, and serious action will be taken if students are caught cheating on programming assignments or examinations.  Copying of any or all of another person’s code is an example of cheating – regardless of size of code copied or the amount of functionality involved.  Discussing design issues or getting help in understanding an algorithm from someone is certainly not a problem.  Everyone should do his/her own thinking and programming. 

 

If you have any question at all, check with the TA or instructor, and/or attach information to your submission to identify the collaboration or help you had. 


CSCI 201 Syllabus

 

Week

Date

Course Topics

Readings

Activity

1

 

No class 1/13 and 1/15

 

 

2

1/20

1/22

Principle of Encapsulation/Inheritance

OO Analysis & Models

Significance of OO Principles

T1: Chap 17; 13

T4: Chap 1,2,3;

T2: 8,9

P0 discussed

 

P1 posted 1/23

3

1/27

1/29

Encapsulation in C++

Constructor/Destructor

Using classes effectively

T1: Chap 8;13,14

T3: As relevant

 

4

2/3

2/5

Friends, Namespaces

Exceptions in C++

Inheritance in C++ and Java

T1: Chap 8,13,14, 11, 17

T3: As relevant

 

5

2/10

2/12

Protected members, their uses

Kinds of derivation (in C++), applications

T1: Chap 17;18

T3: as relevant

P1 due 2/13

P2 poated 2/13

6

2/17

2/19

Dynamic Binding

Polymorphism and applications

Completion of inheritance topics

T1: Chap 17,18,19

T3: as relevant

 

7

2/24

2/26

Overloading in C++

Function Overloading

Operator Overloading

T1: Chap 9,15

T3: as relevant

P2 due 2/27

 

P3 posted 2/27

8

3/2

3 / 4

Templates concepts

Standard Template Library – basic containers and algorithms

T1: 10,6,12,16

T3: as relevant

Midterm 3/2 in class

9

3/9

3/11

 

STL containers – how to choose

STL iterators – how to use them

STL algorithms, functors, with examples

T1: 10, 6,12,16

T3: as relevant

T2: 2,3,4,5,6

P3 due 3/14

 

10

3/23

3/25

Java Architecture / HTML Basics

Applets & Applications

Exceptions in Java

T2: Ch 1—10, 14

P4 posted 3/23

11

3/30

4/1

File Processing

Java Abstract Windows Toolkit

Graphics and Event Programming

T2: Ch. 11, 12

 

 

12

4/6

4/8

Various kinds of events

More graphics components

Animation, sound and other cool stuff

T2: 11, 12, 13, 16

 

P4 due 4/9

P5 posted 4/9

13

4/13

4/15

Threads and parallel programming

Sockets and network programming

T2: Ch. 17, 15, 21

 

14

4/20

4/22

 

Layout management

Other Advanced Java features

Multiple inheritance in C++

T2: 11, 12, 13,16

T1: 11,18

 

15

4/27

4/29

Overflow topics, course retrospective

Future directions of technology

Review and examples

 

P5 due 5/1

(NO LATE SUBMISSIONS!!)

 

FINAL EXAM in the classroom:  May 4th 2004  ; 4:30 p.m. to 6:30 p.m.

The University of Southern California does not screen or control the content on this website and thus does not guarantee the accuracy, integrity, or quality of such content. All content on this website is provided by and is the sole responsibility of the person from which such content originated, and such content does not necessarily reflect the opinions of the University administration or the Board of Trustees