600.107 Intro Programming in Java
Syllabus

 

600.107 Introduction to Programming in Java
Syllabus -- Spring 2013

Course Details

Lectures: Mon, Wed 1:30-2:45, Shaffer 3
Instructor: Joanne Selinski, joanne -at- cs.jhu.edu, Croft (NEB) 222
Head TA: Trey Tacon, ttacon -at- gmail.com, hours in the HacLab (Krieger 160)
Course Assistants: an army of helpers will hold office hours in the HacLab; see posted schedule

Catalog Description: This course introduces the fundamental programming concepts and techniques in Java and is intended for all who plan to use computer programming in their studies and careers. Topics covered include control structures, arrays, functions, recursion, dynamic memory allocation, simple data structures, files, and structured program design. Elements of object-oriented design and programming are also introduced. Prerequisite: familiarity with computers. [General]

Course Web Pages: www.cs.jhu.edu/~joanne/cs107 for lecture materials and assignment details, blackboard.jhu.edu for assignment submission and grades, and piazza.com/class#fall2012/600107 for Q&A discussions and announcements. These are VERY important sources of course information and must be checked regularly!!

Required Text: Dean & Dean, "Introduction to Programming with Java: a Problem Solving Approach", McGraw-Hill Higher Education, 2008.
Weekly reading and exercises will be assigned from this text. It is available in the JHU bookstore, and from various on-line sources. You can also buy this text electronically at www.coursesmart.com. Supplemental materials will be available on the course webpage.

Recommended Reference: Many students like to use a more reference style book when writing programs, and for later coursework in computer science/programming. Here are some popular ones, available for reading on-line through the MSE Library services. Be sure to get the most recent editions. The Java language class library documentation is also available on-line and should be your primary reference.

  • D. Flanagan, "Java Examples in a Nutshell", O'Reilly.
  • Deitel & Deitel, "Java How to Program", Prentice-Hall.
  • Arnold, Gosling & Holmes, "The Java Programming Language", Addison-Wesley Professional.

Course Outcomes: Upon completion of this course students should:

  • Understand the basic concepts and principles of structured programming.
  • Understand the basic concepts and principles of object oriented programming.
  • Produce sample test cases, pseudocode or an incremental coding plan for a given programming problem statement.
  • Be able to design, write and test a Java program to implement a working solution to a given problem specification.
  • Understand the operation of common data structures and algorithms.

Course Topics: We will cover basic concepts and techniques for programming including algorithms, variables, control structures (decision and looping), text files, method writing, simple class design and usage, and arrays. We will also introduce recursion, polymorphism, and exceptions (if time permits). We will not cover any GUI material, however you are welcome to read and experiment on your own (just not in your assignments). A more detailed schedule is given below, and may be updated as the course progresses.

Grading: Your course grade will be determined by the weighted average of your grades based on the following breakdown.

in-class exercises & participation  
weekly assignments 40%
midterm, Chapters 1-4 & 11 on Monday 3/4, in class20%
final, Chapters 5-10, 12-15, Appendix 6 & 8 on Thursday 5/16 at 2pm40%

Assignments will be comprised of warm-up exercises, programs and reflections. Each assignment component will be assigned a point value based on its expected workload. Each program grade will be based not only on correctness, but also on style and good programming techniques. Your course assignment average will be computed as the points earned divided by total points possible. NO CREDIT WILL BE GIVEN FOR PROGRAMS THAT DO NOT COMPILE! NO CREDIT WILL BE GIVEN FOR LATE ASSIGNMENTS! If a program is not working perfectly by the due date, turn it in as is with detailed comments as to which parts are complete, and which are not. (Remember: It must compile!) Exceptions for illness will be given only by Joanne (not by any TA/CAs). Exceptions for poor planning or heavy workloads will NOT be given. Letter grades for the course will be subject to my evaluation of your overall class performance, but there will not be a curve. Grades will be available on Blackboard - please check them regularly for accuracy. Expect to spend roughly 6-8 hours per week outside of class on your assignments and reading.

Assignment Reflections: You will be expected to reflect briefly on each program you write. These reflections must be included as comments at the beginning or end of each main program file, and will count as part of the assignment grade. Comment on things like: how useful was the warm-up exercise? how hard was the program and why? where did you need help? how long did it take to complete? what was the best part of the assignment and why? how would you redesign this assignment if you were the teacher? You should have a paragraph of well-written (properly formed English) reflections for each assignment.

Assignment Logistics/Computer Use: Although many students prefer to write programs on their own computers, everyone should have access to the Krieger 160 campus computer lab. This lab has machines running some version of the Windows operating system. Do not store your program files on public machines - doing so will be considered a serious violation of the Ethics Code. Instead we recommend using a flash drive so you can work on your programs from any computer. You are strongly encouraged to use jGRASP (available on those machines, and from free online downloads at www.jgrasp.org) for program development. All programming assignments must compile with the standard Java compiler. Windows users can get this freely from the Oracle website. Mac users might already have it installed, or can get it through Apple. (Links for download are on the main course webpage.) You must use at least the Java 5 version, and download the full JDK. NO CREDIT WILL BE GIVEN FOR CODE THAT DOES NOT COMPILE! Assignment submission will be through Blackboard. You should keep a back-up copy of every program you submit.

Collaboration: The only group work in this course will be problems solved during lectures, and if you'd like, ungraded textbook problems. You must solve your graded programming assignments without consulting other students. For homework help you may only consult the instructor, the teaching and course assistants, or tutors. You must abide by the Computer Science Academic Integrity Code (see below), as well as the University's Ethics Code.

Attendance: You are expected to attend and actively participate in all class sessions. Inevitably, students who do not attend regularly do poorly on tests and assignments. You are responsible for all material presented while you are absent. Students who miss class due to illness, religious holidays, etc. should inform Joanne as soon as possible if requesting any accomodations as a result. If you have trouble or need extra help, don't hesitate to contact us! Once you get behind, it is very difficult to catch up.

Miscellany: Any student with a disability who may need accommodations in this class must present to Joanne an accommodation letter from Student Disability Services (385 Garland, studentdisabilityservices@jhu.edu, (410) 516-4720). In addition, you must email Joanne at least two weeks prior to any tests to request accomodations.

Computer Science Academic Integrity Code

Cheating is wrong. Cheating hurts our community by undermining academic integrity, creating mistrust, and fostering unfair competition. The university will punish cheaters with failure on an assignment, failure in a course, permanent transcript notation, suspension, and/or expulsion. Offenses may be reported to medical, law or other professional or graduate schools when a cheater applies.

Violations can include cheating on exams, plagiarism, reuse of assignments without permission, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition. Ignorance of these rules is not an excuse.

Academic honesty is required in all work you submit to be graded. Except where the instructor specifies group work, you must solve all homework and programming assignments without the help of others. For example, you must not look at anyone else's solutions (including program code) to your homework problems. However, you may discuss assignment specifications (not solutions) with others to be sure you understand what is required by the assignment.

If your instructor permits using fragments of source code from outside sources, such as your textbook or on-line resources, you must properly cite the source. Not citing it constitutes plagiarism. Similarly, your group projects must list everyone who participated.

Falsifying program output or results is prohibited.

Your instructor is free to override parts of this policy for particular assignments. To protect yourself: (1) Ask the instructor if you are not sure what is permissible. (2) Seek help from the instructor, TA or CAs, as you are always encouraged to do, rather than from other students. (3) Cite any questionable sources of help you may have received.

On every exam, you will sign the following pledge: "I agree to complete this exam without unauthorized assistance from any person, materials or device. [Signed and dated]". Your course instructors will let you know where to find copies of old exams, if they are available.

For more information, see the guide on "Academic Ethics for Undergraduates" and the Ethics Board web site (http://ethics.jhu.edu).

Course Schedule

Course Schedule: All items in this syllabus are subject to change to correct errors or if there is unanimous agreement that a change is desirable.

Dates Topic Due
1/28-2/1 Ch 1: Hardware, software, programming overview, course overview.
Ch 2: Algorithms & Design
Slides 1-22
Piazza sign-up, survey
2/4-2/8 Ch 3: Variables, arithmetic operators, constants, strings, statements, input and output.
Ch 11: More on data types and operators.
Slides 22-39
Install, arithmetic warm-up
2/11-2/15 Ch 4: Decision statements (if, if/else, switch), relational operators, boolean expressions, comparing Strings.
Slides 40-50
arithmetic programs, decision warm-up
2/18-2/22 Ch 4: Repetition statements (while, do/while, for), nesting.
Ch 15: Input and output text files.
Slides 50-59
decision programs, loop warm-up
2/25-3/1 Ch 5: Math & Character classes, String & Random classes.
Writing static methods. Appendix 6: Javadoc.
Ch 6: Writing helper classes w/static methods.
Slides 60-63
loops program
3/4-3/8 Monday: Midterm on Chapters 1-4 & 11.
Hangman development example
Slides 64-70
midterm study, methods warm-up
3/11-3/15 Ch 7: Writing instantiable classes, accessors & mutators.
Ch 8: Software engineering, helper methods.
Ch 9: Class (static) variables & methods.
Slides 71-79
files, random, methods program
3/18-3/22 Happy Spring Break!!  
3/25-3/29 Ch 10: One dimensional arrays of primitives, two dimensional arrays, arrays of objects.
Slides 80-86
class to match driver, array warm-up
4/1-4/5 Ch 10: Classes with arrays, common array operations.
Slides 86-89
2D array program
4/8-4/12 Ch 10: Array algorithms: sorting & searching, analyzing performance.
Slides 90-98
collection program warm-up
4/15-4/19 Appendix 8: Recursion.
Slide 99
collection program
4/22-4/26 Ch 12 & 13: Interfaces, inheritance, OO Design.
Slides 100-105
recursion program, polymorphic warm-up
4/29-5/3 Ch 14: Exception handling.
Course wrap-up.
Slides 106-112
polymorphic program
5/16, 2pm The final concentrates on the last 2/3rds of the class material.
study