Spring 2019 — 3.0 Units
2019-01-17 through 2019-05-09
Class time: Mon/Wed, 12:40 – 14:10 [sec. 05]
Class time: Tue/Thu, 14:40 – 16:10 [sec. 03]
Class Location: Doolan Hall 112
Lab Mgr.: Masao Kitimura
Doolan 104, 310.338.8100
Dept. Admin.: Jacqi Davis
Doolan 101, 310.338.7351
CMSI 185 or Equivalent
or consent of Instructor/Dept. Chair
Instructor: B.J. Johnson

Office Hours: Mon, 14:30 - 18:30
Office Hours: Tue & Thur, 13:00 - 14:30
Tue & Thur, 16:15 - 17:30
Wed, 14:30 - 16:00

Office Location: Doolan 220

[Dedicated to the memory of Professor Phil Dorin, teacher, mentor and friend.]

Course Description from the Latest University Bulletin

Apprenticeship-styled workshop in Java or JavaScript programming, loosely structured around the notion of algorithm paradigms, treating one medium-sized application every two weeks in a laboratory setting. Typical projects include discrete simulation, randomized estimation, maze solving, dynamic programming, large-number arithmetic, and numerical methods.

For Computer Science majors and minors only.

Prerequisite: A grade of C [2.0] or better in CMSI 185 or consent of instructor.

Note that we'll be using the Java programming language, but the course will also provide some general information about, and some examples from, many other programming languages.

Course Prerequisites

The prerequisite course is CMSI 185 — Introduction to Computer Programming, or some equivalent. Students who have not taken [specifically] CMSI 185 must have prior approval of the instructor. If you do have some Java programming experience, it may be helpful, but you might find that you need to be willing to un-learn some potentially bad habits.

Note that the course description above is not very specific.... there is MUCH more detail below!

Programming, like anything else, takes practice. You should be willing to make mistakes, to learn how to fix them, and to learn not to be afraid of them. Humans [and now even computers!] learn by making mistakes, and this is the place to do so without fear.

Course Goals and Objectives

The goal of this course is to learn the basics of Java computer programming and software application construction, as well as to learn to apply algorithmic thinking. Students will learn how to create working computer programs, how to think critically about deconstructing problems, and how to appreciate the difference between well-crafted programs and what is known [in the software industry] as schlock. Students learn to view computer programming as an art form as well as a lucrative profession. The topics covered include [but are not limited to]:

When you finish the course, you will be able to:

Some things we will study and do during this class:

What You'll Need for Success

In a nutshell, here's what you'll need to do to be successful in this course:

Expected Workload

In addition to the time spent in two class meetings per week, students will be responsible for about 3-5 hours per week of academic work outside of the classroom. This work will consist of programming homework, watching some videos about programming and related computer science topics, reading/study of textbook material, and use of [and experimentation with] the Java programming language and topics discussed in class. Homework assignments are performed individually in this class, unlike CMSI 185. The intent of this course is to provide the necessary practice required to begin to master the subjects and topics covered.

Textbook and Resources

There are two textbooks for this course. Since they are considered recommended and are not treated as required, they are probably not on the shelf in the LMU bookstore. You might be able to find copies in the LMU Hannon Library, but that will be on a first-come-first-served basis [Gee, sounds like a queue data structure, huh?]. They are all available from Amazon and other fine literature retailers, and I have included links to their listings. In addition, by careful Internet searching, you may find links to PDF versions of these books. Since this is an introductory course, there will be much of the latest and greatest Java that will not be germain or required for our purposes, so just about any version of the books will do. Note that the use of the links to Amazon does not imply any endorsement, official or otherwise, of that institution. Here is the list:

There is also a VERY large number of other resources which can be used to mine the gold for all sorts of related information about Java programming. There are ample Java resources on the Web; Oracle's Java website is definitive, and you'll want to refer to the Java API's often. [You should bookmark these links in your browser so you can have them available while programming.]

New for 2018: Help Sessions – There is H.O.P.E.

Starting this semester, part of my office hours on Wednesday will be devoted to a collaborative help session I'm calling Help On Problem Exercises, or HOPE. These sessions will be strictly for extra help for your programming projects and exercises. The idea is for you to come in small groups and work collaboratively with each other and with me, to get help on things that you are having some difficulty with. So, for those who are struggling, there is HOPE. These sessions will take place from [hopefully] 15:00 to 16:00 on Wednesday, in the Keck Lab Annex, Doolan 114

General Course Topics Outline

A list of topics covered, and the approximate order and time frame in which they will be discussed, is available on the class notes page for this site.

Reading Assignments

The specific reading assignments for this course are from the Nutshell book. The readings will also be covered in class, during the first 3 – 5 weeks of the course, but it will be in your best interest to read not only what is covered from that book, but also whatever you can find about the Java programming language, and about each of the computing paradigms that will be introduced during the course.

Homework Assignments

During the first month, the main objective is to become broadly familiar with the Java programming language and its development environment, and you should expect a new programming assignment every class, typically consisting of several small programs and methods.

During the remainder of the course, a new problem will be assigned [roughly] bi-weekly. For each one several possible approaches will be discussed, eventually singling out one algorithm for you to put into a Java program implementation. Sketches of the important program and data structures will then be provided, and your mission will be to complete the program[s].

Remember that the assignments are to be completed individually! While some collaboration is allowed/encouraged, it should be kept to a bare minimum. You may ask a classmate for help in diagnosing a syntax problem, or discuss the assignment in general terms, but, unless the assignment explicitly calls for pair programming, you may not share any code. You MAY NOT copy code from the internet or from fellow students! Doing so will be considered cheating/plagiarism [see the screed on this situation that appears below].

All written homework assignments are due at the beginning of the class on the date they are due. Deviation from this process requires prior consent of the instructor. I left my homework at home is not a valid reason for late work. This is college, and you can be responsible for remembering what you need to remember. Every effort is made to ensure assignments, required deliverables, and due dates are prominently posted on these pages; it is your responsibility to make sure you know what is due and when it is due.

You may certainly turn assignments in late; I will happily accept them, but they will be reduced in grade by one letter for each day they are late. Day means day, not workday or class day; an A+ homework due on Thursday which is not turned in until the following Tuesday will unfortunately only earn a failing grade, unless some prior arrangements are made with the instructor due to illness or some major schedule conflict. However, if you want to turn the assignment in late, I'll still provide feedback even for assignments which have no chance of any credit; I keep this policy to allow you to get the learning benefit of the assignment even if you don't get a grade for it. My philosophy is that it is important for the students to know the material, even if an assignment doesn't get the best marks.

All assignments will be submitted through the GitHub open-source configuration management tool. Use of this tool will be discussed and demonstrated during class the first week.

Programming Project Homework descriptions and their due dates are listed on the Assignments web page of this site.

Exams, Quizzes, and Projects

There will be no tests, no midterm exam, and no planned final exam for this course. At the whim of the instructor, there may be one [or more] quickie quiz[es] during the semester. However, I may need to actually give a final exam, per the final exam schedule from the registrar's office, if I am unable to assign individual grades due to potential collaborative effects.

Use of Technology

You will need access to a computer of some variety. It doesn't matter whether it is a Windows, Mac, or Linux machine, since there are versions of the Java Development Environment for any and all platforms. You should download and install the Java Software Development Kit [SDK] from the Oracle Java website. For purposes of this class, just about any version later than Java 1.2 will work fine. Downloads of the latest version [Java 1.10] are available for all platforms here.

You will need to install and use some sort of text editor into which you can type your code in ASCII text-only form. You cannot use a word processor such as Microsoft Word or Mac's TextEdit [unless you configure it properly] or other word-processing software which puts in special characters that the Java compiler won't recognize. Several possible free tools are available, such as the following:

If you don't have a computer available, or if you just don't want to carry yours around, there are plenty of computers of all types in the Keck Lab, Doolan 112. You will need an account, which may be obtained for free from the Keck Lab Manager, Masao Kitamura, by simply filling out a form. All of the Keck Lab computers have internet access, text editors, and browsers. They also have word processors for doing lab write-ups, and are connected to both B&W and color laser printers. However, since a big part of this class is working during the class period on the program assignment, and includes being able to ask the professor for assistance in class, it's probably a good idea for you to have your computer with you. Some sections of this class meet in the Keck Lab Annex, which has a limited number of computers [I think there are three Windows boxes and one Mac at this writing], so having your own laptop is a plus. In addition, there are several big screen monitors in both labs, which you are free to use as extension screens if you wish. We have extra HDMI cables and a few dongles [adapters] which you can use during class as well.

Another helpful tool is a testing framework, also known as a test harness. While test code, or at least skeletons for test code, will be provided to you for some projects, there is a very nice free test framework called J-Unit that can help you a lot. It is available for free download from this site, which also has complete instructions for setup and use, and some sample code to walk you through making sure it works.

Attendance and Participation

Although attendance is not mandatory, it is in your own best interest to attend every class. Much of the material will be discussed in class, so counting on the book for all information which appears on tests will not provide you with complete information. In addition, there will be coding done during class time, and in-class exercises in small groups which you will miss out on if you are not there.

Obviously, if you skip too many classes, you will likely fail; this is a simple and self-fulfilling prophecy.

The class participation rubric appears with the grading stuff in the tables below.

Extra Credit

There will be no extra credit given in this course. If this policy changes during the semester, you will be notified and the details will be provided so that you understand things clearly.


Grades for the course are assigned according to the weighting factors shown in the tables below.

Final letter grades will be assigned based on the following scale:

PercentLetterRating and Achievement
91 - 100% A / A- Professional work; outstanding
81 - 90% B+ / B / B- Entry level work; above average, shows extra effort and interest
71 - 80% C+ / C / C- Satisfactory work; expected with reasonable effort
61 - 70% D Substandard work; minimal effort shown
60 or lessF Thank you for playing; see you next semester

Evaluation ItemWeight
Homework #00 5%
Homework #01 5%
Homework #02 5%
Homework #03 10%
Homework #04 10%
Homework #05 15%
Homework #06 15%
Homework #07 15%
Homework #08 10%
Class Participation10%
Total Contribution100%

Class Participation CriteriaValue
Absent *without* prior notification/agreement of professor0
Absent *with* prior consent/agreement of instructor1
Demonstrates adequate preparation.
Knows basic reading facts, but does not show evidence of trying to interpret or analyze them; demonstrates sporadic class involvement.
Demonstrates excellent preparation to readings and other material.
Offers analysis, synthesis, and evaluation; puts together pieces of the discussion to develop new approaches that take the class further.

New for Fall 2016: Minimum Grade Requirement for LMU Core Curriculum Courses

Effective Fall 2016: To satisfy a Core requirement [other than a flag requirement], a course must be completed with a grade of C- or better. To satisfy a flag requirement, a course must be completed with a grade of D or better. Baccalaureate Degree Requirements, 2016-17 University Bulletin.
Should a student receive a D in a Core Curriculum course, the student will earn the course units, but the Core Curriculum requirement [except for flags] will not be met.
Important to Note: This policy does not affect any grade received prior to Fall 2016. Those grades of D earned in Core Curriculum courses prior to Fall 2016 will remain on record as having met the Core Curriculum requirement. This policy only affects grades awarded in Fall 2016 and beyond.

Also of note…

An incomplete will be granted only when the student requesting the incomplete has completed at least 80% of the coursework, and has at least a B average in the course work completed. This is standard LMU policy.

Leave of Absence/Withdrawal: Please read the revised policy here:

All work is evaluated for both technical merit and quality of written and/or oral presentation. Find yourself a good spelling and grammar checker, or a trusted human editor, if you are having any difficulty with the rules of standard English language usage. Another excellent resource is the Academic Resource Center, located on the south side of Daum Hall. The center takes appointments, and also allows drop-in consultation sessions, and they have a number of good benefits. Call [310] 338-2847 to schedule an appointment. [For those that don't know, Daum Hall is the building where the LMU Security and Parking office used to be. ARC is on the second floor.]


In this class, documentation which is not of professional quality is no longer acceptable. Spelling, grammar, and internal document consistency all count and will cost you big-time if not correct! I will not hesitate to knock off a full letter grade on an otherwise perfectly correct assignment if there are egregious and/or numerous spelling/grammar errors. In addition, coding style will play a large part in determining the grade on the code for the homework. It is the job of each student to properly structure, comment, and indent, to select proper names for variables, and to not "hard-code" values.


Academic Honesty and Integrity

Academic dishonesty will be treated as an extremely serious matter with severe consequences that can range from receiving no credit for assignments/tests, failing the class, to expulsion. It is never permissible to turn in any work that has not been authored by the individual student, such as work that has been copied from another student or copied from a source [including the Internet] without properly acknowledging the source. It is your responsibility to make sure that your work meets the standard set forth in the Academic Honesty Policy [see http://academics.lmu.edu/honesty.]

Cheating on assignments, plagiarism, falsification of data, and other similar or related violations of LMU standards of honesty and integrity ARE NOT TOLERATED. Any student or students who commit such offences will receive a failing grade for that assignment, possibly a failing grade for the course, and conceivably further disciplinary action. It is acceptable to use code from textbooks, friends, coworkers, or other sources, as long as the source of the code is cited/acknowledged in all reports and source file headers.

This does not mean that collaboration is discouraged; in fact, discussion of assignment algorithms is encouraged. However, this does mean that exact duplicates of code modules which are turned in by more than one student as individual work, or uncited copying from the Internet or any other source, will not be allowed. Such a situation will be dealt with in the manner outlined above. In short, if you are responsible for your own work, do your own work.

Repeat: failure to follow this simple guideline will result in a failing grade on that assignment, likely failing grade in the course, and quite possibly further disciplinary action.

Special Accommodations

Students with special needs who require reasonable modifications, special assistance, or accommodations in this course should promptly direct their request to the Disability Support Services [DSS] Office. Any student who currently has a documented disability [ADHD, Autism Spectrum Disorder, Learning, Physical, or Psychiatric] needing academic accommodations should contact the DSS Office [Daum Hall 2nd floor, 310-338-4216] as early in the semester as possible. All discussions will remain confidential. Please visit http://www.lmu.edu/dss for additional information.

Respect For Self And Others

As an LMU Lion, by the Lion's code, you are pledged to join the discourse of the academy with honesty of voice and integrity of scholarship and to show respect for staff, professors, and other students.

The following LMU documents are available to reference:

For more information on this or any other conduct issues, please refer to the Student Codes and Policies page on the Student Affairs Division Home Page. The Lion's Code, Student Conduct Code, Honor Code and Process, and information on many other policies are available from that link.

Expectations for Classroom Behavior

Electronic Devices: Without being totalitarian about it, because I forget sometimes myself, I would prefer that you turn off your cell phone ringer during class. Cell phone ring tones and text message tones can become disruptive. I know this because my own ring tone is one of the worst offenders. If you have a laptop, I don't mind if you want to IM with your friends or surf the Internet during class time, but be aware that will not be accepted as a valid excuse if you are called on and don't know what we're talking about — this could be a contributing factor for a low class participation grade for that day, but it's really up to you to decide. Just please keep the volume off so that you don't disturb others.

Emergency Preparedness

To report an emergency or suspicious activity, contact the LMU Department of Public Safety by phone [x222 or 310-338-2893] or at the nearest emergency call box. In the event of an evacuation, follow the evacuation signage throughout the building to the designated safe refuge area where you will receive further instruction from Public Safety or a Building Captain. For more safety information and preparedness tips, visit http://www.lmu.edu/emergency.

Office Hours / Communication / Contact Information

I have office hours on Mondays and Wednesdays from noon to 4 PM, and on Tuesdays and Thursdays from 4:15 to 6:15 PM. That's 1200 to 1600 and 1615 to 1815 in 24-hour time format. Also, if my door is open, you are welcome to stop in without an appointment. I use an appointment system to make sure that if someone wants/needs one-on-one time, it is available.

You can set up such one-on-one appointments at my You Can Book Me site. Just visit the page and click on any available slot (which isn't lined out), Then enter your information in the window fields. We will both get a confirmation e-mail, which is my notification that you'll be coming in. Easy, huh!? NOTE: be sure to enter YOUR e-mail address in the place provided, NOT MY e-mail address. The tool notifies me automatically, but YOU won't get a notification unless you enter *YOUR* e-mail address. OK? OK…

I am also always available by e-mail at either of the following addresses:

I check email at both these addresses at least twice a day, usually three times a day. In addition I am frequently on line for G-mail IM sessions after 8:30, PM at the above address..

YOU SHOULD CHECK YOUR LION EMAIL ADDRESS OF RECORD. I will start by sending all email blasts to everyone's lion.lmu.edu email addresses. If you specifically provide me with a preferred alternative email to use I will be happy to oblige. I create a distribution list to which I send all general communications, so it is important for me to have an email address which you will check on a regular basis.

Tentative Nature of the Syllabus

If necessary, this syllabus, the course web site, and its contents are subject to revision; students are responsible for keeping up with any changes or modifications, which will be distributed either in class or using the normal [specified] communications channels previously described [usually via e-mail].