[Dedicated to the memory of Professor Phil Dorin, teacher, mentor and friend.]
Specification and design of data types, information structures, and their associated algorithms. Collection classes and interfaces for sets, lists, stacks, queues, hierarchies, heaps, and dictionaries. Implementation techniques such as arrays, linked lists, hash tables, and efficient tree structures. Introduction to asymptotic computational complexity. Methods for sorting, indexing, and hashing.
This class uses Java for its concrete examples, homework, and exams. There will be some class time spent reviewing Java fundamentals at the beginning of the semester. 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, codingbat.com, and the ubiquitous Stack Overflow to help you when you are stuck.
This course will be in person, and will be recorded. Video recordings will
be posted to the course BrightSpace page. Every effort will be made to post the videos in a timely manner
so that they are available as close to the ending of each class session as possible.
You will also need to have access to the BrightSpace course page
for section 1 for this class. On those
pages you will find links to 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 official course description above is not very specific.... there is more detail below!
Learning data structures, 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.
When you finish the course, you will be able to:
|
|
In accordance with the LMU Credit Hour Policy, the credit standard for this 4-unit standard 15-week course is met by an expected of a total of 180 hours of student engagement with the course learning activities [at least 45 hours per credit], which includes regularly scheduled instructor-student meeting times and/or equivalent direct faculty instruction, such as systematic readings, research activities under the supervision of the instructor, asynchronous presentations, group work, and other learning activities. You should also anticipate needing additional time outside of class to complete assignments. The University's Credit Unit Policy can be found here.
| In a nutshell, here's what you'll need to do to be successful in this course.
|
|
|
|
Instructional MethodsCourse 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 a GitHub repository. Use of GitHub and all other tools required for the course will be explained during class sessions. However, it will be up to the students to handle any and all installation on their respective computer. Of course, if you need help, it will be available! Expected WorkloadIn accordance with the LMU Credit Hour Policy, this 4-unit course will require 12 hours of work per week, which includes the time spent in class and lab sessions. This is an average — some weeks may be more, some less, depending on how much debugging you must do on your homework assignments and other such tasks. |
There is one required textbook for the course, which is/is not available in the LMU Bookstore:
There are three optional textbooks for this course, which are NOT for sale in the LMU Bookstore:
Although none of these are required, they are quite useful because they contain all the concepts that will
be covered in the course. The first book is a golden oldie
but 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.
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 Lafore 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 for tutorials 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 or secondary 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!
There are no lab fees associated with this course.
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.
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 first day of class of the week listed [except where noted], 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:
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. 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 must use proper American English and/or Programming Language spelling and grammar. Failure to do so will cost you points on every assignment, so get a spell-checker and a grammar checker, or find a friend who is proficient to proofread your work before it is submitted.
Most of your work will be submitted using GitHub; however, any assignments which are to be printed out for submission must be printed on a printer.
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.
On assignments 1, 2, and 3, WORK BY YOURSELF. On assignments
4 and 5, WORK WITH A PARTNER. I can't stress this enough; part of this policy is
don't split up the work – WORK TOGETHER on the assignment. This activity
mimics an industry code development model called pair programming
which is part of the Extreme
Programming software development method. Feel free to collaborate in your pairs as much as you want,
doing the entire assignment together.
Homework submissions will be done using GitHub. You will need to create a GitHub repository.
Please use the naming convention and the directory structure as it is shown on the
Week 01 web page in the Assignment Submission
section.
There will be five homework assignments during the semester, due on the dates shown in the list below. Each assignment will contain several exercises 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.
Homework submissions will be done using GitHub. You will need to make an account if you don't have one already, then create a repo under that account. Note that for homework 4 and homework 5, BOTH partners will need access to the repo so that you can both access it. Please make sure to include me as a contributor on your repo so that I can put evaluation results there.
Make sure the repo is a PRIVATE repo. I realize that this kind of flies in the face of the idea of "Open Source Culture"; however, the reason is that if the repo is public, I can't post updated evaluations since everyone will be able to see your results, which are Personally Identifiable Information [PII] and thus must be kept private.
MAKE SURE THAT BOTH MEMBERS OF YOUR TEAM ARE ABLE TO ACCESS THE REPO, AND MAKE SURE TO ALSO INVITE ME TO BE A CONTRIBUTOR so that I can upload your evaulation results.
There will also be weekly in-class exercises
which serve to reinforce the week's
concepts presented in class. They will be submitted in your repo in GitHub, but are only part of your
class participation grade. they are an indication of your progress and
understanding. They are practice drills, but are good for maintaining and improving your skills. Also,
having access to your repo helps ME to help YOU ~ I can take a regular look to see how you are doing, and
you can also commit code that is in process
with which you need my help.
By the way, GitHub has no limit on storage. PLEASE DON'T HESITATE TO COMMIT YOUR CODE! There is no harm in committing code frequently so you have a 'baseline' – this can be VERY handy!
There will be two quizzes during the semester, scheduled for Wednesday of week 6 [2022-10-05]
and Wednesday of week 12 [2022-11-16]. Note that they are interspersed with the homework assignments, such
that there will not be any homework assignment due on a test date. Note that due to popular convention,
the quizzes
will be known as tests
henceforth. Tests are cumulative.
There will be a final exam, which will be scheduled per the university's official
exam schedule. Check the date and time on the schedule Final Exam schedule, which is easily available
here.
At this writing, the exam is scheduled for this section as follows:
| Class Start Time | Class Days | Exam Start Time | Exam Day |
|---|---|---|---|
| 13:45 PM | Monday-Wednesday-Friday OR Monday-Wednesday [that's YOU, Bill] | 14:00 [2:00 PM] | Monday |
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.
You will need access to a computer of some variety. …Well, Duh… If you don't have a computer available, let me know and I will try to work with Masao to get something set up for you using a VPN to a computer in the Keck Lab on campus. You'll still be remote, but you'll have access to SOMETHING to work on. In the best of all possible worlds, we will all have super-duper computing engines to use, but we're obviously not there yet… If we are |
|
You should download and install the Java Software Development Kit [JDK] from the Oracle Java website. Downloads of the latest version at this writing [Java 17 or Java 18] 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:
You can certainly use Notepad [on Windows] or TextEdit [on Mac, if properly configured for plain text] to edit your source code, but it can be difficult to collaborate with these tools due to the lack of line numbers at the left margin. Also, there is no syntax coloring in those editors. On Mac, in the terminal window you can use the "vi" editor, but it takes some getting used to and is rather an "acquired taste".
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. After you
have downloaded both files, follow the Getting Started
instructions at
this location.
Students are expected to attend classes as part of the expected workload, as explained above. You should arrive on time to all course meetings, prepared to engage in the course content. Arriving late or leaving early disrupts the learning experience. You are expected to notify the instructor in advance whenever possible if you will miss a class or if you anticipate arriving late or leaving early. You are expected to participate in all class activities — participation in this course is measured by how much you engage in the content and the activities. Activities are provided to assist your learning and help your progress toward the final assignments. As such, no assignments are optional unless they are labeled as optional.
Obviously, if you skip too many classes, you will likely not do well in the course, 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. That is part of why there
are in-class exercises
every week, to give you experience with the concepts for that week.
Another thing — part of your class participation is to do the weekly in-class exercises and upload them to your GitHub repository. You will need to create the repository in the form that is given on the week one page, so that I can find them. These submissions will *NOT* be a part of your course grade other than as part of your participation.
The class participation rubric appears with the grading stuff in the tables further down the page.
There will be no extra credit given in this course.
Please review the Academic Degree Requirements and Policy information found here. Grades for the course are assigned according to the weighting factors shown in the tables below. Though it is uneven in its distribution, which [being OCD] I really dislike, your final letter grades will be assigned based on the following scale:
| Percent | Letter | Rating and Achievement |
|---|---|---|
| 90 - 100% | A / A- | Professional quality work; outstanding |
| 80 - 89% | B+ / B / B- | Entry-level quality work; above average, shows extra effort and interest |
| 70 - 79% | C+ / C / C- | Satisfactory work; expected with reasonable effort |
| 60 - 69% | D | Substandard work; minimal effort shown |
| 59 or less | F | Thank you for playing; see you next semester |
| Evaluation Item | Weight |
|---|---|
| Homework [total, all 5] | 25% |
| Quiz #1 | 15% |
| Quiz #2 | 20% |
| Final Exam | 30% |
| Class Participation | 10% |
| Class Participation Criteria [Each Class Meeting] | Value |
|---|---|
| Absent *without* prior notification/agreement of professor | 0 pts |
| Absent *with* prior notification/agreement of professor OR | 5 pts |
| 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, has in-class code checked in to proper classwork folder for the week.
| |
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.
NOTE: 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 [ARC], 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, which is not the home of ITS. ARC is on the second floor.]
The ARC also provides student support in the form of University advising, writing support, tutoring services, and first-to-go support, as well as:
Writing & Course Tutoringlink in myLMU.
Another thing to remember is, your coding style is just as important a part of your assignment evaluations as correctly running code. I WILL NOT HESITATE to take points off for code that has hard-coded numbers, lack of proper comments, poorly aligned indenting, etc. EVEN IF THE CODE RUNS CORRECTLY! Further, let me re-state that code that does not compile will be not be evaluated and you will have to do it over to get any credit for the assignment. Remember that I compile and run your code from the command line so just because it works in your editor is not a guarantee that it will work for me. Forewarned is forearmed, as the saying goes.
|
FAIR WARNING!!! DANGER WILL ROBINSON!!! FAIR WARNING!!!
FAIR WARNING!!! DANGER WILL ROBINSON!!! FAIR WARNING!!! |
|
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 several e-mail notifications at your Lion e-mail address when the evaluation form is available near the end of the term. 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.
|
General StatementLoyola 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.
|
For an additional resource, see and the LMU Honor Code and Process
found at:
this link.
unauthorized useand, therefore, prohibited
The DSS Office offers resources to enable students with physical, learning, ADD/ADHD, psychiatric disabilities and those on the autism spectrum to achieve maximum independence while pursuing their educational goals. Staff specialists interact with all areas of the University to eliminate physical and attitudinal barriers. Students must provide documentation for their disability from an appropriate licensed professional. Services are offered to students who have established disabilities under state and federal laws. We also advise students, faculty and staff regarding disability issues. Students who need reasonable modifications, special assistance, academic accommodations or housing accommodations should direct their request to the DSS Office as soon as possible. All discussions will remain confidential.
The DSS Office is located on the 2nd floor of Daum Hall and may be reached by email at dsslmu@lmu.edu or phone at (310) 338-4216. 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.
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 Department Website.
Electronic Devices: Pretty easy — please turn off your cell phone ringer during class time. That's it for me! However…
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.
It is possible that we may need to transition to a hybrid or even fully online modality. If that happens, the following paragraphs will apply.
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:
Sendbutton.
Students and faculty have a reasonable expectation for privacy in all learning spaces. Distance 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:
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.
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 in PROWL, and also 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 Doolan Hall or Pereira buildings, 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 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. Since we are, for the present, back in person on campus, my office hours will be held IN MY OFFICE!!! HUZZAH!!!
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-284_spring2021
. 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 with questions or just to chat.
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! Although I don't use that tool for office meeting,
I do join in often, and there is ALWAYS someone there to hang out with.
YOU MUST CHECK YOUR LION EMAIL ADDRESS OF RECORD. I will
start the semester's communications by sending all email blasts to everyone's lion.lmu.edu
email
address, which is known as your address of record. 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.
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 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.