CMSI 281 Syllabus/Course Description Page
Fall 2018 — 3.0 Units
2018-08-27 through 2018-12-14
Class time: Mon & Wed, 12:40 — 14:10
Location: Pereira 121
Dept. Admin.: Jacqi Davis — Doolan 101, 310.338.7351
Lab Mgr.: Masao Kitimura — Doolan 104, 310.338.8100
CMSI 185
CMSI 186
Instructor: B.J. Johnson
Office Hours [Doolan 220]: Mon 14:30 — 17:45
Tue 14:45 — 17:45
Wed 14:30 — 16:00
Thu 14:45 — 18:00
Other hours by appointment

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

Course Description from the Latest University Bulletin

Introduction to data types, information structures, and algorithms. Topics include: collection classes and interfaces for sets, lists, stacks, queues, and dictionaries; implementation techniques such as arrays, linked lists, and efficient tree structures; introduction to computational complexity; elementary sorting; hashing.


This class uses Java for its concrete examples, homework, and exams. There will be some class time [but not much] spent reviewing Java fundamentals. You are more than welcome to ask for whatever clarification you need at any time, either in class or out. If you require additional practice with Java, there are any number of online tutorials which you can use to hone your skills. In addition you can use other professors' web sites [either LMU or other schools] and things like Code Academy, Kahn Academy,, and Stack Overflow to help you when you are stuck.

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

Programming, like anything else, takes practice and perseverance. You must 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, Objectives, and Learning Outcomes

The goal of this course

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

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 accordance with the LMU Credit Hour Policy, this 3-unit course will require 9 hours of work per week, which includes the time spent in class and lab sessions. This work will consist of homework, a project, watching and commenting on some videos about databases and related topics, and reading/study of textbook material.

…and *I* promise to:

Textbooks and Resources

There are three optional textbooks for this course:

Although none of these are required, they are quite useful because they contain all the concepts that will be covered. The first book is a golden oldie but I have a version of it on my GitHub repo that you may use for reading and reference. In spite of the fact that it is somewhat dated, the concepts in it are fundamental, and they are presented clearly so you can understand them rather easily. Besides, it's free.

The other two books will be used for ancillary material. They are VERY good for you to have on your own programmer's bookshelf in some form, because they are full of lessons to help you write high-quality and easily maintained code.

WORD OF WARNING: There exist two different textbooks with the same name. Data Structures and Algorithms in Java is apparently a popular name. We will be using the book by Robert Lafore, NOT the book by Goodrich and Tamassia. The G&T book is very good, and it's in its 6th edition. However, the Lafore book is the one we will be using. Actually, either one will work for the concepts we'll be discovering…

THE BOOKS ARE NOT AVAILABLE IN THE LMU BOOKSTORE. They are available at many other fine retail outlets, both online and brick-and-mortar. We will be using them for homework assignments, general reading and information, as well as tutorials for using several different databases both in and out of the classroom.

Although we won't be covering the books in their entirety for this class, we will be using them as primary resources.

There is also a large number of other resources which can be used to "mine the gold" for related information about data structures. The topic is a very broad field, which has been around for a very long time, and touches almost every aspect of compjuter science. Any google search on data structures will turn up at least ten million links. Many of these will be shared during class, and you will be required to find some information about specific topics on your own. You may even be required to use the LMU library, [GASP!!] so be prepared!

General Course Topics Outline

A list of topics that are 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

Chapter readings from the text books and the dates by which these readings should be completed are listed below. Note that you should have read the chapter material prior to the date listed, and you should be ready to discuss the text, ask questions about the concepts, and begin working with some of the implementations of the concepts in class. It is also a good idea to at least read (or preferably try) the exercises contained in [and at the end of] each chapter.

Here is the reading list:

  1. Week 1:
    • Lafore book: all of chapter one [due Wednesday]
    • Bloch book: all of chapters one and two
  2. Week 2:
    • Lafore book: all of chapter two EXCEPT the workshop applet sections
    • Bloch book: chapter 3, item 9, starts on page 42
    • Bloch book: chapter 3, item 11, starts on page 53
  3. Week 3:
    • Lafore book: all of chapter four
    • Bloch book: chapter 4, item 12, starts on page 59
    • Bloch book: chapter 4, item 14, starts on page 71
  4. Week 4:
    • Lafore book: all of chapter five
    • Bloch book: chapter 4, item 16, starts on page 84
    • Bloch book: chapter 4, item 17, starts on page 89
  5. Week 5:
    • Lafore book: all of chapter three
    • Bloch book: chapter 6, item 23, starts on page 119
    • Bloch book: chapter 6, item 25, starts on page 126
  6. Week 6:
    • Lafore book: re-read chapter two section on big-O notation
    • Bloch book: chapter 6, item 28, starts on page 136
    • Bloch book: chapter 7, item 29, starts on page 141
    • Bloch book: chapter 7, item 30, starts on page 145
  7. Week 7:
    • Lafore book: all of chapter eight
    • Bloch book: chapter 7, item 38, starts on page 165
    • Bloch book: chapter 8, item 40, starts on page 172
    • Bloch book: chapter 8, item 42, starts on page 176
  8. Week 8: Lafore book: all of chapter nine
  9. Week 9: Lafore book: all of chapter ten
  10. Week 10: Lafore book: all of chapter twelve
  11. Week 11: Lafore book: all of chapter eleven
  12. Week 12: Lafore book: all of chapter thirteen

Homework Assignments

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 something 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 which are to be printed out for submission must be printed on a printer. Details for this requirement are provided for each assignment on the individual assignment's page. All assignments must use proper American English and/or Programming Language spelling and grammar. Failure to do so will cost you a letter grade, so get a spell-checker and a grammar checker, or find a friend who is proficient to proofread your work before it is submitted.

Other than these simple rules, there are no requirements for formatting, fonts, colors, diagrams, or anything else with respect to your homework assignments, other than good code craftsperson-ship.

There will be five homework assignments during the semester, due on the dates shown in the list below. Each assignment will contain several excersises to help give you experience with the concepts covered. Each of these assignments is detailed on a separate web page; they are available from the links below. Solutions will be provided after ALL the assignments are handed in. This policy provides a motivation for everyone to turn assignments in on time, since NO ONE gets the solutions until EVERYONE has submitted their work.

  1. Homework #1 — Due date 2018-09-19 [week 04]
  2. Homework #2 — Due date 2018-10-17 [week 08]
  3. Homework #3 — Due date 2018-11-07 [week 11]
  4. Homework #4 — Due date 2018-11-28 [week 14]
  5. Homework #5 — Due date 2018-12-14 [finals week] [this homework is cancelled…]

Exams, Quizzes, and Projects

There will be two quizzes during the semester, scheduled for Wednesday 2018-10-03 and Monday 2018-11-07 [which is week 6 and week 11, respectively]. Note that they are interspersed with the homework assignments, such that there will not be any homework assignment due on a test date.

There will be a final exam, which will be scheduled per the university's official exam schedule. At this writing, the final is scheduled for 11:00 on Wednesday of finals week. It would be a good idea to double-check this date and time as the semester end approaches. The schedule is available here. The final is a cumulative final, which covers everything for the entire semester.

Missed quizzes or tests: it is the responsibility of the student to provide adequate advance notice to the professor if a scheduled quiz or test is going to be missed. If you have a conflict in schedule which will cause a missed exam, please notify the professor at least two days in advance, if possible, to avoid a failing grade for that exam. Prior arrangements must be made in order for a make-up exam to be taken, since this situation requires the professor to create a second copy of the exam/quiz/test.

Use of Technology

You will need access to a computer of some variety. Duh.

If you don't have a computer available, or if you just don't want to carry it around, there are plenty of computers of all types in the Keck Lab, Doolan 112. However, they may not all have the desired software installed. Caveat Emptor.

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 and elaborated upon in class, so counting on the books for all required information will not provide you with complete information. In addition, there will be 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.


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 quality work; outstanding
81 - 90% B+ / B / B- Entry-level quality 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 (total, all 5)25%
Quiz #1 15%
Quiz #2 25%
Final Exam 30%
Class Participation 5%

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 some sporadic class involvement
Basically, you're in your chair, these points are there
Demonstrates excellent preparation with respect to readings and other materials;
Offers pertinent analysis, synthesis, and evaluation; puts together pieces of the discussion to develop new approaches that take the class further.

Starting 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 on the top right of page 38 of the University Bulletin. A PDF copy is available 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.)

Another thing to remember is, your coding style is an important part of your assignment evaluations. I WILL NOT HESITATE to take points off for code that has hard-coded number


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 and project. It is the job of each student to properly structure, comment, and indent, to select the proper names for variables, and to not hard-code values. NO MAGIC NUMBERS!


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 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

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, the "pair programming" paradigm is encouraged. However, this does mean that exact duplicates of reviews and write-ups 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 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 section in the Community Standards. The Lion's Code, Student Conduct Code, Honor Code and Process, and information on many other policies are available from that link. You can find any and all other related data from the Office of Student Conduct & Community Responsibility web page. Also check the main Student Affairs Departments Website.

Expectations for Classroom Behavior

Electronic Devices: Without being totalitarian about it, because I forget sometimes myself, but I would prefer that you turn off your cell phone ringer during class. Cell phone ring tones and text message tones can become disruptive. 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

Office Hours / Communication / Contact Information

I have office hours during the days when I have classes, Monday through Thursday. The normal hours are listed at the top of this syllabus page. I will make every effort to be available during those hours, and if I cannot for some emergency reason, I'll make sure you all know about it in advance if possible. My office is Doolan 220, on the second floor, and the normal office hours are posted on the small cork bulletin board to the right as you are facing the door. Office hour data is posted there in redundancy to the posted hours on this syllabus page. Brought to you by the Department of Redundancy Department.

Every effort will be made to be availble during these posted hours. If something changes, I will notify you in advance, when possible and as soon as possible, via an e-mail blast.

In addition, if you want specific [undivided] attention, you can set up appointments at my You Can Book Me site. Just visit the page and click on any available slot (which isn't greyed 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!?

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 AIM chat sessions after 9:00 PM; my screen name is NanoBeej, or for Google chat sessions at the above address..

YOU SHOULD CHECK YOUR LION EMAIL ADDRESS OF RECORD. I will start by sending all email blasts to everyone's 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 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).