CSE 1002: Software Development II (Fall 2017)
Check my WWW page for up to date information.
Class meets from 9am to 9:50 Monday, Wednesday, and Friday in the Crawford (CRF) Building room 210.
The lab instructor is Haoran Chang.
Lab sections meet on TR from
12:30pm to 1:15pm in OEC 228 and 229
from 5pm to 6:15pm in OEC 127 and 128.
There is another WWW page
for material related to the lab section.
(We use the learning mangement sytem Canvas only sparingly.)
We review basic Java programming and recursion,
introduce object-oriented programming, generics,
and study simple data structures.
We review sorting and algorithmic analysis---both analytic and empirical.
We assign programming exercises in various application domains like
image processing, audio synthesis, Android app development, Monte Carlo methods,
and web page ranking.
Basically, the prerequisite for cse1002 is the ability to read and write
Java programs using static methods and fields.
Students should already know most of the Java statements, operators,
and primitive types.
An important difference in cse1001 compared to cse1002 is the difference
between static and non-static.
The textbook for the class is:
Related textbooks for the class:
Lecture Topics and Notes
Notes from the Textbook
Here are the authors' PDF lecture slides based on the old book:
- Chapter 1: Elements of Programming.
- Chapter 2: Functions and Modules.
- Chapter 3: Object-Oriented Programming.
- Chapter 4: Algorithms and Data Structures.
- Java Classes one should know for cse1002.
- Read input
- Matrix multiplication (used in page rank)
- Recursion: Towers of Hanoi, recursive flood fill (used in percolation)
- Base conversion:
- Root finding:
Newton's method for square root, recursive bisection
- Lexicographic ordering
- Searching: linear search,
recursive binary search RecursiveBinary.java,
iterative binary search Binary.java, and
generic binary search GenericBinary.java.
- Sorting arrays:
Merge.java (recursive, divide and conquer),
- Ring buffer or Circular Buffer --
an array-based implementation of a queue. See lab "Guitar Hero".
of linear search, binary search, insertion sort, selection sort, quick sort, stacks, and queue.
- Animated Sorting Algorithms
from Professor Robert Stärk of ETH
- Stack animation, array-based stack
- Queue animation
- Circular buffer
- Linked_list, doubly-linked list
- Animations of sorting algorithms sorting-algorithms.com:
Visualization of sorting algorithms in dance created at Sapientia University of
7min on ,
- codingbat.com -- basic Java exercises
- TJU -- thousands of problems,
solve some in Java and prove you are ready for cse2010.
Grading and assignments
There will be three in-class midterms and a final exam.
Tests will make up 60% of the total grade.
Every week there will be programming assignments and possibly quizzes in lab.
Attendence in lab is required for quizzes and some programming assignments.
It is not possible to make-up missed quizzes and assignments.
However we drop some low scores to compensate for the occasional absences.
For each student the
numeric scores for the
assignments and exams are recorded.
If you have any question about your standing in the class,
or if some score has been recorded wrong,
please contact me or the lab instructor in a timely fashion.
We tend to grade exam questions and projects using the entire scale and not just the top end,
so scores look lower than you may be used to.
Since the tests are not standardized,
your grade is determined mostly by how you do compared to the rest of the class,
not by the magnitude of your numeric scores.
The average numeric score is roughly equivalent to a B- letter grade.
Hence, the approximate way to tell how you are doing in the class is:
above average numeric score means A or B, below average means C or D.
The letter grade for the class will be assigned at the end of the semester.
Cutoffs based on the weighted sum of these numeric scores will determine the letter grade.
Sometimes we have to make some very tough choices;
invariably someone in the class must receive
the highest B, the highest C, etc in the class.
Your best strategy is to not make it close, i.e., study!
Students are expected to take the final exam
at the regularly scheduled time during finals week.
All students need a Florida Tech "Tracks" account to work in the lab.
All Java programs must compile with version 1.8 of the compiler.
All projects must adhere strictly to the style guide
and have the appropriate
Strive to turn in beautiful programs; don't turn in the first draft.
Projects will be submitted electronically using the submit server.
You must follow all submission procedures precisely.
If the failure to follow procedures makes it difficult to evaluate the project,
then you can expect to receive no credit for the project.
Even for simple programs it is hard to find bugs.
We can test your program and see if it has bugs,
but we cannot easily find the bug in your program.
Learn to test to the programs yourself, so that it has fewer bugs;
don't turn in your program without thoroughly testing it.
Please take advantage of the support services provided by the
CS help desk and
the office of Academic Support.
Do not cheat on the exams; do not ask for or give code to others;
do not buy or sell the solutions to the projects.
Do not make solutions publicly available.
The penalty for academic misconduct is a grade of 'F'.
The objective of the class is developing code, not finding code.
Discussions with your classmates, with teaching assistants, at the help desk,
or academic support center are encouraged.
Know how to do exercises, know how to ask for help, and know how to help each other.
Compare the following pairs of questions:
Would you give me your Olympic gold medal?
How do I become an Olympic swimmer?
What is the code for today's programming exercise?
How do I compute the algorithm base three of a number?
If you receive ideas, code snippets, or help from any source,
be sure to give proper credit and acknowledgment.
Programs that are significantly the same as others will receive a score of zero.
Please note, that copies of
some work (homework, projects, exams, etc) for undergraduate classes
may be kept on file.
This is done for two purposes.
For review by ABET,
for the purposes of maintaining the accreditation of the CS program,
and to detect plagiarism.
What is Title IX?
Title IX of the Educational Amendments Act of 1972 is the federal law
prohibiting discrimination based on sex under any education program
and/or activity operated by an institution receiving and/or benefiting
from federal financial assistance. Behaviors that can be considered
“sexual discrimination” include sexual assault, sexual harassment,
stalking, relationship abuse (dating violence and domestic violence),
sexual misconduct, and gender discrimination. You are encouraged to
report these behaviors.
Florida Tech can better support students in trouble if we know about
what is happening. Reporting also helps us to identify patterns that
might arise — for example, if more than one complainant reports having
been assaulted or harassed by the same individual. Florida Tech is
committed to providing a safe and positive learning experience. To
report a violation of sexual misconduct or gender discrimination,
please contact Security at 321-674-8111. * Please note that as your
professor, I am required to report any incidences to Security or to
the Title IX Coordinator (321-674-8700). For confidential reporting,
please contact CAPS at 321-674-8050.
Calendar and Important Dates
Consult the Florida Tech academic calendar
for important dates for all classes.
|Monday, 21 August 2017||first lecture
|Monday, 21 August 2017||eclipse
the solar kind
|Tuesday, 22 August 2017||first lab
|Monday, 4 September 2017||Labor Day (no classes)
|Thursday, 7 September 2017||lab canceled
|Friday, 8 September 2017||first midterm exam
Introduction and S&W sections 1.3, 1.4, & 1.5
|Monday, 11 September 2017||class canceled (Hurricane Irma)
|Wednesday, 13 September 2017||class canceled (Hurricane Irma)
|Friday, 6 October 2017||second midterm exam
Data, expressions, statements, recursion and S&W Chapter 2.
|9-10 October 2017||Fall Break (no classes)
|Saturday, 28 October 2017||make-up lecture
|Friday, 3 November 2017||third midterm exam
Object-oriented programming, S&W Chapter 3
|Friday, 10 November 2017||Veterans Day, no classes
|Saturday, 11 November 2017||ACM SER 2017 programming contest
|Saturday, 18 November 2017||make-up lecture
|Tuesday, 5 December 2017||Last lab
|Wednesday, 6 December 2017||Almost the last lecture
|Thursday, 7 December 2017||Last lecture
|Monday, 11 December 2017||Final exam from 8am to 10am in CRF 210
- What is a Computer Science?
- What is a computer? RAM, disk, CPU, ALU, registers, memory hierarchy
- What is an operating system? Interface layers: hardware, operating system, application
- What is the Java platform?
- Programming languages and translators
- Development of Java programs, IDEs
- Files, streams, pipes
- Java language review
- Data types, declarations, statements
- Characters and text, arrays
- subprocedures, recursion
- Object-oriented programming
- Classes as data structures
- Static versus non-static
- Sharing and mutable
- Extending classes, subclass polymorphism, inheritance
- Overriding and dynamic dispatch
- Abstract classes, Interfaces, Iterable, Comparable and Comparator
- Java collection classes API
- Exception handling
- Checked and unchecked exceptions
- try resource statement
- Generics, parametric polymorphism
- Generic classes
- Generic methods
- Generic interfaces: Comparable and Comparator
- Data Structures and Algorithms
- lexicographic ordering
- Linked lists, stacks and queues
- Algorithms analysis, big-oh, tilde notation, empirical and mathematical
- Sorting (bucket, selection, insertion, merge), searching (binary search)