You are on page 1of 8

Fall 2010 Course Syllabus

Course Number: CS 1335.001


Course Title: Computer Science I
Time & Location: MW 12:30pm-1:45pm ECSS 2.305

Instructor: Dr. Jey Veerasamy


Office: ECSS 3.231
Office Phone: 972-883-4241
E-Mail: jeyv@utdallas.edu
Web Site: www.utdallas.edu/~jeyv

Office Hours: Monday 1:45pm – 2:30pm


Tuesday 1:15pm – 2:30pm
Wednesday 1:45pm – 2:30pm
Thursday 1:15pm – 2:30pm
Other hours by appointment.

TA: Dong Wang


Office: ECSS 4.610
Office Hours: Wednesday 2:00-4:00pm
Email: dxw076000@utdallas.edu

Prequisites:

CS 1336 or equivalent programming experience. (3-0) S

Catalog Description:

CS 1335 - Computer Science I for Non-Majors (3 semester hours) Introduction to object-oriented


software analysis, design, and development. Classes and objects. Object composition and polymorphism.
Sorting and searching. Strings using core classes. Inheritance and interfaces. Graphical User Interfaces.
This class cannot be used to fulfill degree requirements for majors in the School of Engineering and
Computer Science. Computer Science and Engineering majors may NOT take this course. Students who
have taken CS 1337 cannot receive credit for this course. Prerequisite: CS 1336 with a grade of C or
better or equivalent. (3-0) S

Course Expectations:

After successful completion of this course, the student should have an:

1. Ability to develop object oriented software solutions


2. Ability to express multi-class relationships among objects
3. Ability to implement graphical user interfaces
4. Ability to develop event driven programs
5. Ability to implement algorithms to search and sort objects
6. Ability to develop recursive programs

Textbook:

Course Syllabus Page 1


Starting Out with Java: From Control Structures through Objects (4th Edition), by Tony Gaddis, Addison
Wesley, ISBN: 9780136080206

Assignments:

Program #1

Purpose: Demonstrate the ability to create and execute a JAVA program using moderately complex
control structures.

Assignment: Write a program that creates a loan amortization table. The user of the program will supply
values for Initial Loan Principal, Annual Percentage Rate and Monthly Payment. The program should print
out the appropriate amortization table including the number of Monthly Payments and the Total Interest
paid for the life of the loan. The program should allow multiple runs (up to 4 different versions) of the
table process and should allow the user to compare runs in a tabular format.

Program #2

Purpose: Demonstrate the ability to create and execute a JAVA program that utilizes complex data
structures to solve a daily life problem.

Assignment: Write a program that will accept ten (or more) names (first and last names) and associated
birth-date. Your program should ask the user for how many people s/he wants to enter and then read the
names (first and last) and the corresponding birth-date. The birth-date must be entered in the following
format: MM/DD/YYYY. Your program should then use a menu that allows the user to display, search and
exit. Display should display the list of the entries, sorted by last name, first name, or birth-date. Search
should search for a specific entry by a specific field (last name, first name or birth-date). Exit should
terminate the program when the user selects exit from the menu.

Program #3

Purpose: Demonstrate the ability to create and execute a JAVA program that creates a multi-class
relationship among classes.

Assignment: Write a program that consists of the classes listed below.

Player Class: The Player Class consists of at least two elements -- the player name and a list of scores for
games. The score attribute is not used in Program #3 but will be needed in Program #4. Include in the
class appropriate accessor and mutator methods for each element in the class. You may have other
attributes if needed.

Team Class: The Team class consists of at least 6 elements -- the name of the team and five players from
the Player class. Include in the class appropriate accessor and mutator methods for each element in the
class. You may have other attributes if needed.

Input3 class: The Input3 class is provided for you. The Input3 class supplies data for your program. The
Input3 class has a public method called getNextString, which returns a string with the input for your
program, one after the other. You must use this class to get the data for your program. See Input3.java
on eLearning to understand the class construction.

Your program should display the roster of each team in alphabetical order by last name.

Program #4

Purpose: Demonstrate the ability to create and execute a JAVA program that creates a multi-class
relationship among classes.

Course Syllabus Page 2


Assignment: Enhance Program #3 to include the Game class listed below.

Game Class: The Game Class consists of at least 3 elements – the names of two teams and an integer
number which identifies the game. Include in the class appropriate methods to show the output requested
below. You may have other attributes if needed.

Input4 class: The Input4 class is provided for you. The Input4 class supplies data for your program. The
Input4 class has a public method called getNextString, which returns a string with the input for your
program, one after the other. You must use this class to get the data for your program. See Input4.java
on eLearning to understand the class construction.

Your program should display the following information:

For each game:

Display the final score for the game.


Display the name of the highest scoring player(s) in the game, the score and the name of his team.

For each team:

Display the roster of each team in alphabetical order by last name with the average score of each player
for the season.
Display the average score for the season against each of the two opponent teams.

Program #5

Purpose: Demonstrate the ability to utilize graphical interfaces in Java

Assignment: Write a program that simulates a box fan. The box fan should have a speed control
mechanism for OFF, HIGH, MEDIUM, and LOW speeds. The fan blades should rotate at whatever speed
has been selected by the user. The fan should allow changing the fan state without terminating the
program.

Program #6

Purpose: Demonstrate the ability to write a complex Java application.

Assignment: Form a three to four member programming team from students in your class. Write a
program to register students for a college. Students have names, addresses and courses. Implement the
interface class RegisterStudent. RegisterStudent has one method, register, which returns the Boolean
value of true or false if the student is successfully registered for the course. Graduate students can only
register for 5000 or 6000 level courses with a maximum course load of 6 credit hours while undergraduate
students can only register for 1000, 2000, 3000 or 4000 level courses with a maximum course load of 12
credit hours. Courses have a course number, credit hours and a minimum and maximum enrollment. The
system should graphically display a sorted list of registered courses for a student and a roster for each
current course with the names of the students enrolled in sorted order. Demonstrate the correct
operation of your program by creating a driver program to load the student data base and the course data
base from data your group has created. The grader can then select students and courses for each student
and display the reports.

Academic Calendar:

Class Date Class Activity Assignment

1 Monday, August 23 Review of Syllabus eLearning Test due (???)


2 Wednesday, August 25 Java Fundamentals Read Chapter 1 and 2
Course Syllabus Page 3
3 Monday, August 30 Java Fundamentals Read Chapter 3 and 4
4 Wednesday, September 1 Java Fundamentals Read Chapter 5, Program 1
5 Monday, September 6 Arrays Read Chapter 8
6 Wednesday, September 8 Arrays continued
7 Monday, September 13 Arrays continued Program 1 due
8 Wednesday, September 15 Text Processing Read Chapter 10, Program 2
9 Monday, September 20 Exam Review
10 Wednesday, September 22 Exam 1 – Ch 1-5 & 8
11 Monday, September 27 Classes Read Chapter 6
Read Chapter 9, Program 2
12 Wednesday, September 29 Classes and Objects due
13 Monday, October 4 Classes and Objects … Program 3
14 Wednesday, October 6 Inheritance Read Chapter 11
Read Chapter 12, Program 3
15 Monday, October 11 Exceptions due
16 Wednesday, October 13 Exceptions continued Program 4
17 Monday, October 18 Exam Review
18 Wednesday, October 20 Exam 2 – Chapters 6, 9-11
19 Monday, October 25 GUI Applications Read Chapter 7
20 Wednesday, October 27 GUI Applications continued Program 4 due
21 Monday, November 1 Applets Read Chapter 14, Program 5
22 Wednesday, November 3 Applets continued
23 Monday, November 8 Advanced GUI Read Chapter 13
24 Wednesday, November 10 Advanced GUI continued Program 5 due, Program 6
25 Monday, November 15 Program 6 Group Meetings
26 Wednesday, November 17 Recursion Read Chapter 15
27 Monday, November 22 Program 6 Group Meetings
28 Wednesday, November 24 Recursion continued
29 Monday, November 29 Program 6 Group Meetings
30 Wednesday, December 1 Exam Review
Monday, December 6 Study day, no class
31 Wednesday, December 15 Exam 3 @ 11am – Ch 7, Program 6 due
12-15

Course Requirements:

There will be regularly assigned reading and homework problems. The homework problems will require
the student to spend time programming a computer.

Programming assignments should be turned in by means of eLearning. Assignment files contain:

A text copy of all source code (.java).


A text copy of your algorithm(s) and UML diagrams (.txt, .doc or .jpg).

Course Syllabus Page 4


Programming assignments will be graded on a 100 point basis, utilizing the following criteria:

Max Score
Partitioning 5%
Organization 5%

Source Code
Program Design
Efficiency 5%
Coupling 5%
Comments 10%
Formatting 5%
Coding Style Naming 5%
Capitalization 5%
No crashes 5%
Execution

Program Execution Error Recovery 5%


Efficiency 5%
Nominal cases 25%
Specification
Special cases 5%
Documentation 10%
Total 100%

Keep in mind that you always want to write code that is easy to understand and is also easy to maintain.

Source Code: (45%)

Program Design: 20%


Many times you can write code that fulfills the requirements by just writing a single main() method. But
most times, the problem is complicated enough to require several steps, which may be repeated one or
more times. Please design your programs so that the functionality is spread across multiple methods that
each accomplish a particular task, and name the method according to the task it performs.

Points Criteria
5 Partitioning: Is the required functionality spread logically across multiple methods (or classes)?
5 Organization: Is the overall program flow easy to follow? Is it easy for an outsider to figure out
how your software works?
5 Efficiency: Do the individual methods accomplish their given tasks as efficiently as possible? Are
unnecessary variables, loops, methods, and classes eliminated?
5 Coupling: Are methods (and classes) “loosely coupled”? Does each method only receive the data
it needs in order to accomplish its task? Are the “public” methods and variables appropriately
so? Is information as hidden as possible?

Comments: 10%
Every file should have a header that includes your name, CS1335.001, & the homework number.
Every class should have an extensive header comment explaining the purpose of the class.
Every method should have comments explaining what it does, what its parameters are, and what
values it returns.
Significant variables and sections of code should have comments explaining their purpose. Avoid
meaningless comments like “Declare the variables” or “This code adds one to the variable”.

Coding Style: 15%


You should try to follow most of the coding standards for Java (see http://java.sun.com/docs/codeconv/),
but these three are especially important:

Points Criteria
5 Formatting: Is code properly indented to indicate blocks?

Course Syllabus Page 5


5 Naming: Is everything (significant variables, classes, methods) named logically and
descriptively? (Not required for looping variables and throwaway variables.)
5 Capitalization:
Package names are lowercase: java.io, java.net, etc.
Class (and interface) names should be nouns, with the first letter of each internal word
capitalized: Loan, AmortizationTable, Person, HashMap
Method names should be verbs, with the first letter lowercase & the first letter of each
internal word capitalized: run(), runFaster(), runForYourLife()
Constants should be in all upper-case, with words separated by an underscore: const final
int THIS_IS_A_CONSTANT = 1;

Execution: (45%)
This section has to do with how well your program runs. If your program does not compile, please be
aware that you may get no credit in this section.

Program Execution: 15%

Points Criteria
5 No crashes: Does the program actually run all the way through the simplest possible test case
without crashing?
5 Error Detection & Recovery: Does the program react well (does not crash) to unexpected or
inconsistent events or input? Are exceptions handled appropriately?
5 Efficiency: Does the program finish executing in a reasonable amount of time?

Satisfaction of Specification: 30%


This is really the most important part: does your program do what it is supposed to do?

Points Criteria
25 Nominal cases: Does the software correctly fulfill the requirements of the assignment for the
“expected” test cases?
5 Special cases: Does the software correctly handle unusual but legal test cases? Example: square
root of a negative number, interest payment higher than loan payment

For programming assignments that seem arbitrarily restricted (“your program must save 4 runs”, “your
program must accept up to 10 names”), points will be not taken off as long as your program meets at
least those requirements. You may exceed them without penalty.

Documentation (10%)
All assignments must be submitted with documentation. At a minimum, this should include an algorithm
report and a UML class diagram if you have more than a few classes.

You should describe the overall flow of your program at least at a high level. If there are any parts of the
program that are unusually complex, you should specify those parts in detail, using pseudocode or a
flowchart.

Course & Instructor Policies:

All make-up exams are scheduled during the week following the actual exam date at the discretion of the
instructor. Make-up exams are only given to those students who coordinate the missing of an exam prior
to the originally scheduled exam date and time.

Course credit is only given for work assigned in the course schedule. No extra work will be assigned nor
will extra credit be given for any extra work performed by a student.

Course Syllabus Page 6


Class attendance is not recorded or required except for exam dates and times. However, 5-10 quizzes will
be given on randomly selected days. Those quizzes will typically test your understanding of course
materials covered recently & 10% of the final grade will determined by your performance in those quizzes.
Make-up quizzes will not be given for absentees, however one lowest score will be dropped when
computing the final grade. All quizzes will be closed book & closed notes.

Assignments are due at midnight on the day listed in the syllabus. Even if you cannot complete a project
in timely manner, you are encouraged to submit the partial version on time to get maximum possible
partial credit. If you are able to complete your assignment fully within a day beyond the deadline, you are
encouraged to submit it again – it will be considered for additional points at the discretion of the
instructor.

Each student in the class is encouraged to join/form a study group. Members of each study group should
support one another in learning and understanding the course material.

The final grade will be composed as follows:

Quizzes: 10%
Projects: 40%
Exam1: 15%
Exam2: 15%
Exam3: 20%

All exams are open book and open notes, but no laptop or electronic devices are allowed.

Letter grades will be assigned as follows:

98-100 A+
92-97 A
90-91 A-
88-89 B+
82-87 B
80-81 B-
78-79 C+
72-77 C
70-71 C-
68-69 D+
62-67 D
60-61 D-
Below 60 F

Off-campus Instruction and Course Activities

No off-campus activities are scheduled.

Policies and Procedures for Students

The University of Texas at Dallas provides a number of policies and procedures designed to provide
students with a safe and supportive learning environment. Brief summaries of the policies and procedures
are provided for you at http://provost.utdallas.edu/home/index.php/syllabus-policies-and-procedures-text
and include information about technical support, field trip policies, off-campus activities, student conduct
and discipline, academic integrity, copyright infringement, email use, withdrawal from class, student

Course Syllabus Page 7


grievance procedures, incomplete grades, access to Disability Services, and religious holy days. You may
also seek further information at these websites:
http://www.utdallas.edu/BusinessAffairs/Travel_Risk_Activities.htm
http://www.utdallas.edu/judicialaffairs/UTDJudicialAffairs-HOPV.html
http://www.utsystem.edu/ogc/intellectualproperty/copypol2.htm
http://www.utdallas.edu/disability/documentation/index.html

These descriptions and timelines are subject to change at the discretion of the Professor.
You can see the updates in eLearning.

Course Syllabus Page 8

You might also like