Loyola Marymount University
Fall 2020 — 3.0 Units
2020-08-31 through 2020-12-18
Class time: Tue & Thu, 09:50 – 11:05
Class location: Zoom Meeting
Lab Mgr.: Masao Kitimura
Doolan 104, 310.338.8100
Dept. Admin.: Gina Konrad
Doolan 101, 310.338.7351
CMSI 185 or Equivalent
or consent of Instructor/Dept. Chair
Professor: B.J. Johnson, PhD
Office Hours: Monday, 10:00 - 12:00
14:30 - 17:00
Tue & Thur, 11:15 - 12:30
14:00 - 16:00
Wednesday 10:00 - 12:30
14:30 - 16:30
Office Location: Zoom Meeting

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

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.

Course Structure

This course will be online, with a combination of synchronous and asynchronous content. Lessons given during synchronous sessions will be recorded to support students in different time zones. Some of the content will be distributed asynchronously via videos and readings outside of classroom hours.

Instructions to Access Brightspace

You will also need to have access to LMU's BrightSpace Course Management site for this course. On those pages you will find the link to the Zoom room for the online class, as well as some video information of course content and how-to demonstrations. Your access to that site should be automatic; if you have problems accessing it contact me or the LMU IT department for assistance.

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 to apply algorithmic thinking to problem solving with computation, as well as to learn the basics of Java computer programming and software application construction. 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]:

  • Java programming language, along with key components of its development environment. Unlike JavaScript, which is an interpreted language Java is a compiled language
  • Perfecting your programming style and methodology and familiarizing yourself with Java's program and package structure, control structures, objects, constructors, classes and the class hierarchy, inheritance, and programming with standard I/O.
  • Various algorithm implementations. At the conclusion of the course, students will be able to recognize and apply several of the well-known important programming paradigms.
  • Testing. You'll design countless tests as a routine part of program development and will understand the importance of testing in software development.
  • You will learn to use the GitHub open-source configuration management tool.
  • You will learn [or better understand] the core ideas of Object-Oriented Analysis, Design, and Programming [OOA, OOD, and OOP]. Admittedly, this knowledge will be focused on the Java language, but these concepts apply to any object-oriented language.

Course Learning Outcomes

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

good to go

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

  • Attend all classes — come prepared, having done the reading
  • Complete all the assigned homework/labwork and project-related activities
  • Participate in class discussions, exercises, and activities
  • Ask LOTS of questions, both in class and out of class
  • Come to office hours for help, preferably AS SOON AS you need help

Expected Workload

In addition to the time spent in two class meetings per week, you will be responsible for about 3-5 hours per week of academic work outside of the classroom consisting 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/labwork assignments are performed individually in this class.

Instructional Methods

Course content will be delivered using a combination of lecture, discussion, problem-based learning, group work, projects, presentations, critiques, community-based learning, portfolios, etc. All work will be submitted using an individual GitHub repository. Use of GitHub and all other tools required for the course will be explained during class sessions.

Textbooks 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. Since this is an introductory course, there will be much of the latest and greatest Java that will not be 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 are the books:

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

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 2 – 4 weeks of the course, but it will be in your best interest to read not only what is covered from the 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.

Note that there will be videos accessible from the BrightSpace site for the course that cover some, but not all, of the textbook material. You should expect to view those videos in addition to doing the readings.

Homework/Labwork 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 nearly every class, typically consisting of several small programs and methods. In addition, one assignment will be given that is intended to familiarize you with the command line. To this end, you will be responsible for making sure the code you submit will compile and run from the command line, without use of Eclipse or any other Integrated Development Environment [IDE]. There will be time enough for that stuff later in your career.

After that, a new problem will be assigned [roughly] bi-weekly.

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

Unless otherwise stated, all written homework/labwork 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. 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 when

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.

Where assignments involve programming, the quality of your code, not just its correctness, will play a large part in determining your grade. Please see these resources and notes on clean code for information on expectations of code quality.

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/Labwork 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. There may be one [or more] quickie quiz[es] during the semester.

Use of Technology

You will need access to a computer of some variety. You'll need this computer so as to participate in the in-class exercises, live-code sessions, and to do the homework/labwork.

Also, since all classes this semester will be online, you will need to be able to use the zoom conference application, which will require a camera, speakers/earbuds/headphones, and microphone. If you are unable to attend class at the regular online class hour, there will be videos posted in the course link on LMU's BrightSpace course management tool so that you can view them at another time.

zoom on, bro

You should download and install the Java Software Development Kit [JDK] from the Oracle Java website. For purposes of this class, just about any version later than Java 1.8 will work fine. Downloads of the latest version [Java 14] are available for all platforms here.

You will also need to install and use some sort of text editor into which you can type your code in ASCII/Unicode 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:

Another helpful tool is a testing framework. 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 help you make 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 the class, since you will miss important parts of the material; this is a simple and self-fulfilling prophecy.

I want to emphasize that I care about your learning. As part of your learning process in this class, I would like to invite you to evaluate yourself and participate in your own assessment for the class. It is important to me to know how you are doing — for example, are you understanding the concepts, are you able to put them into real-life situations and examples, are you connecting and engaging with the material, are the explanations clear to you. To that end you will be periodically filling out a form called a mud card [because there are some concepts in each learning unit that might be muddy]. We'll be working together to design them during a class meeting early in the semester, and will then be using them several times during the remainder of the term to help both you and me understand your progress and process.

Mud cards are available through the BrightSpace course page for this class. The version that is currently posted is simply a placeholder, but feel free to take a look at it to get some ideas of things that you might want to contribute when we make the official version.

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

Extra Credit

There will be some extra credit given in this course. Extra credit only applies to specific assignments for which there are logical additions to the work that will merit you extra points if you do them. In those cases, the extra credit points will be in addition to the normal credit for those assignments, such that it will NOT affect a potential score of 100% if you do NOT do the extra credit portion. In other words, for certain assignments, it will be possible to get more than 100% if the extra credit portion of the assignment is completed successfully.

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

Individual homework/labwork assignments are assigned the following weights:

Evaluation ItemWeight
Homework/Labwork #005%
Homework/Labwork #015%
Homework/Labwork #025%
Homework/Labwork #0310%
Homework/Labwork #0410%
Homework/Labwork #0515%
Homework/Labwork #0615%
Homework/Labwork #0715%
Homework/Labwork #0810%
Class Participation 10%
Total Contribution100%

Class participation is assigned for each class meeting based on the following rubric:

Class Participation CriteriaValue
Absent *without* prior notification/agreement of professor0
Absent *with* prior consent/agreement of instructor2
Present in class, and hopefully:
Demonstrates excellent preparation from readings and other material.
Offers analysis, synthesis, and evaluation; puts together pieces of the discussion to develop new approaches that take the class further.

Also of note…

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

Leave of Absence/Withdrawal Policy:

Please read the policy in the University Bulletin.

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/labwork. 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!


Course Evaluation

Student feedback on this course provides valuable information for continued improvement. All students are expected to fairly and thoughtfully complete a course evaluation for this course. All course evaluations for the Seaver College of Science and Engineering are administered online through the Blue evaluation system. You will receive an e-mail notification at your Lion e-mail address when the evaluation form is available. You may also access the evaluation form on Brightspace during the evaluation period. A few minutes of class time will be reserved for you to complete a course evaluation near the end of the semester. Please bring a laptop, smart phone, tablet or other mobile device to class on this date so that you can access the online evaluation platform.

Academic Honesty and Integrity

General Statement

Loyola Marymount University is a community dedicated to academic excellence, student-centered education, and the Jesuit and Marymount traditions. As such, the University expects all members of its community to act with honesty and integrity at all times, especially in their academic work. Academic honesty respects the intellectual and creative work of others, flows from dedication and pride in performing one's own best work, and is essential if true learning is to take place. 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.

Academic dishonesty will be treated as an extremely serious matter, with severe consequences that can range from receiving no credit for an assignment or test to failing the class, to expulsion.

LMU Academic Honesty Policy https://academics.lmu.edu/honesty/:
Unauthorized Access to or Alteration of Privileged and Proprietary Information:

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.

Students should also keep in mind that resources are available through the Library [https://library.lmu.edu] and Information Technology Services [https://its.lmu.edu]. The DSS Office can help students connect with the appropriate person at the Library and ITS.

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. 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 Department Website.

Expectations for Classroom Behavior

Electronic Devices: Pretty easy — please turn off your cell phone ringer during class time. That's it for me, but there's more from LMU at this link.

The official LMU language for this is:

Please turn off and put out of sight all electronic devices (other than those and when allowed) during class-time. The interruptions and/or distractions they cause disrupt class and interfere with the learning process. Even if you are not on video, it's distracting to you.

Expectations for Classroom Behavior in an Online Learning Environment

  1. Netiquette: In addition to LMU's Community Standards, The Lion's Code and Guidelines on LMU Student Classroom and Course-Related Behavior, students should adhere to Netiquette. Your instructor and fellow students need a safe, online learning environment. All opinions and experiences shared, no matter how controversial they may be perceived to be, must be respected in the spirit of academic discourse. You are encouraged to critique an idea but should not attack an individual. Working as a community of learners, we can build a respectful space for discourse. Below are some tips for good netiquette:
    • Listen actively: listen to understand, to learn, and to receive information.
    • Present ideas appropriately
      1. Avoid the use of offensive language
      2. Be aware if Internet Language. For example, do not capitalize all letters since this suggests shouting.
      3. Popular emoticons such as 😜 or 👍 can be helpful to convey your tone but don't overuse them
      4. Use an appropriate and respectful tone when communicating formally or informally.
    • As in a classroom-based session, engaging in private chat during remote class discussions and presentations is disruptive.
    • Do not work on other things during class attendance
    • It may be tempting to multitask during class, but this will impede your learning. Your full focus on the conversation and class materials is required.
    • Before posting your question to a discussion board, check if anyone has asked it already.
    • Don't post irrelevant links, comments, thoughts or pictures.
    • If you refer to something your classmate said earlier in the discussion, quote just a few key lines from their post so that others won't have to go back and figure out which post you're referring to.
    • Respect the opinion of your classmates. If you feel the need to disagree, do so respectfully and acknowledge the valid points in your classmate's argument.
    • Be willing to express dissent. There should be space for non-majority opinions.
    • Edit before you push the Send button.
    • Students are expected to attend class sessions without interruptions.
  2. Zoom Sessions:
    • Please keep your camera on.
    • Please keep your microphones muted until it is your turn to speak.
    • Please use the raise hand feature or use the chat if you have a question or comment.
    • Be an active participant in the breakout sessions.
    • All Zoom sessions will be recorded and put on Brightspace. Please review these if you are unable to attend or need to leave early. Note that I will be intending to break recordings into short parts, shooting for about 10 minutes each, so there will be some stopping and re-starting of videos.
  3. Safety and Privacy in the Remote Learning Environment:

    Students and faculty have a reasonable expectation for privacy in all learning spaces. Bimodal and remote learning can involve the use of synchronous video conferencing, asynchronous recorded lectures, live and online discussions, as well as online forums. In these venues, privacy is a priority for a safe learning environment. See Lion's code.

    As a member of our online community, please follow these privacy guidelines:

    • Videos captured during class meetings should be used only to support student learning and to prepare students for effective learning.
    • Do not share screenshots or images from sessions.
    • Do not record any sessions with your own device; asynchronous classes will be posted in a secured page on Brightspace and may not be downloaded, manipulated, or distributed, or uploaded to a public page for any reason [unless with instructor permission].
    • Do not share class access information such as Zoom links etc.

Because of the nature of the class delivery method during remote zoom times we will also take a look at a document which will serve as a guide for everyone in the class. This Netiquette Document is published here and on the Brightspace site for this class. We will take a look at it during the first week of class and will work to make it agreeable to everyone involved.

Emergency Preparedness

Public Safety can be reached 24/7/365 at 310.338.2893 [or x222 from a campus phone]. In a life-threatening emergency, call 911 first and then call Public Safety if possible. To report an incident, call Public Safety, submit an e-report on the Public Safety website or via the Rave Guardian mobile app, or visit Public Safety in Foley Annex. Review evacuation information and other safety tips posted in each learning space. Make sure you're registered to receive emergency alerts – confirm your contact information at lmu.edu/alert, and download Rave Guardian in the Apple or Google Play store. For more information and emergency preparedness tips, visit https://publicsafety.lmu.edu.

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 purposes of evacuating the building, our safe area is the sunken gardens. There will be people to guide you.

For more safety information and preparedness tips, visit http://www.lmu.edu/emergency.

Office Hours / Communication / Contact Information

Office 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. Office hours, [due to the pandemic] will be held on zoom in my personal meeting room. A link to the office hours z'room is provided on the BrightSpace course page.

I am also always available by e-mail at: my LMU mail address

There is a class slack channel on the LMUCS workspace, named cmsi-286_fall2020. I post to that channel with information at times, and it's a good place to ask/answer questions. It won't hurt you to join! You can also DM me in that workspace.

Beginning in Fall 2020, the LMU CS department is trying a new communication method using Discord for our virtual office hours, and as a virtual Keck Lab environment. Feel free to join up there as well, and post there with your colleagues in the department!

YOU MUST CHECK YOUR LION EMAIL ADDRESS OF RECORD. I will start by sending all email blasts to everyone's lion.lmu.edu email address. 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 in addition to the slack channel, 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 any changes or modifications announced or distributed in class, emailed to students' LMU Lion accounts or posted on LMU's course management system, Brightspace. If you are absent from an in-person or online class meeting, it is the your responsibility to check Brightspace [and/or the course website] and to check with the professor to see if you missed any important class announcements. Students should not rely on word-of-mouth from classmates.