[Dedicated to the memory of Dr. Phil Dorin, teacher, mentor and friend.]
The rigorous application of computing paradigms and principles to the development of software systems for solving engineering problems, with hands-on programming comprising a significant portion of the course.
Laboratory exercises and projects are implemented with modern languages, toolsets, and libraries for scientific computing and linear algebra. Topics include data structures including arrays, lists, and balanced trees; traditional algorithms for searching and sorting; and algorithms for computational geometry, large-scale data processing, and machine learning.
Intended for Engineering majors only, computer science majors will take CMSI 2120 and 2130.
| This class uses Python for its concrete examples, homework, and exams. There will be quite a bit of class time spent reviewing Python 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 Python, there are any number of quality online tutorials which you can use to hone your skills. In addition you can use other professors' web sites [either LMU professors or those from other schools] and things like:
to help you when you are stuck. You can even ask your humble professor in a pinch — I'm always glad to help! |
This course will be in person, and will be recorded [mostly — there
are times when I forget to start the thing]. 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 wonderful and amazing 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 17-week course is met by an expected workload 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. *YOU* promise to:
|
…and *I* promise to:
|
|
|
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 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! There are Teaching Assistants in the Keck Lab [Doolan 112], and you can always ask your classmates. Your humble professor will be available as well, and I'll do my best to make the concepts as clear as I can! |
There is one required textbook for the course, which should be available in the LMU Bookstore:
This book will be used as one of the primary references for the course. You'll need access to it during the semester. There will be some readings, homework problems, and quiz questions from it.
There is one optional textbook for this course, which is NOT for sale in the LMU Bookstore:
This book will be used for ancillary material. It is VERY good for you to have on your programmer's bookshelf in some form, because it is full of lessons to help you write high-quality and easily maintained code.
THE SECOND BOOK IS NOT AVAILABLE IN THE LMU BOOKSTORE. It is available at many other fine retail outlets, both online and brick-and-mortar. We will not be using it for homework assignments, but WILL be using it for general reading and information, as well as for tutorials both in and out of the classroom.
There are two other books that are in my GitHub "Books and Papers" repository. I will tell you about
them on the first day of class and I will be referring to some of their material during the semester.
These books are Java-based instead of Python, but have no fear — any
data structures we'll be learning are mostly what's known as language-agnostic
so the concepts
will still apply. It's just that some concepts are more easily described in languages other than
Python.
Although we won't be covering any books in their entirety for this class, we will be using several books and online web pages and videos 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 computer science. Any Internet 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.
Since there is no textbook, there will be no assigned reading list
— that wouldn't make
any sense, would it?! Instead, here are some good things to read online, or videos to watch about how
things work, or some other interesting [hopefully!] things for you to check out. Be prepared to talk
about some interesting things you learned or observed at the start of class for that week!
All written homework assignments are due at the beginning of the class on the date they are due. There are some professors who set due dates at midnight or some such, but that is NOT the case here — the homework is due at the start of the class on the due date. Homework will be due on the second class meeting day of the week. That means Thursday of the week it is due. This will give you time to visit me during office hours for questions before the assignment is due, and will give ME time to evaluate your work over the weekend to return it to you promptly the next week. 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 and evaluate them so you get the
benefit of feedback on the assignment, 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 other major conflict. I'll still provide you 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. My
philosophy is that it is important for the student 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.
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.
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.
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 there, since anyone will be able to see your results, which are
Personally Identifiable Information [PII] and thus must be kept private.
There will be five homework assignments during the semester, due on the days 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.
The grading rubric
for the assignments are available on my GitHub
repository so that you can know how they will be evaluated. Check out the files for homework01 through
homework05 on this link.
IF YOU ARE WORKING IN A TEAM, PLEASE MAKE SURE THAT ALL MEMBERS OF YOUR TEAM ARE ABLE TO ACCESS THE REPOSITORY, AND MAKE SURE TO ALSO INVITE ME TO BE A CONTRIBUTOR so that I can upload your evaulation feedback and 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 GitHub repo, but are only part of
your class participation AND ARE NOT PART OF YOUR GRADE. They provide 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
may need [or want] 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 is a semester project which will be assigned just before Spring Break at week 8.
For this assignment you can pick from a set of five different programming projects that are described
in my GitHub repository under
the Projects
directory. Feel free to take a look at them early so that you can decide on one.
These are fairly major applications, so DON'T WAIT PROCRASTINATE!
There will be impromptu quizzes during the semester, usually near the end of the first class day of the week. These are designed to allow you immediate practice with the material for that day/week. These are not for score, just for practice. These quizzes will be done using a tool called Kahoot, which will be explained to you during class this week and next week.
There will be two quizzes during the semester, scheduled for Thursday of week six and
Thursday of week 10. Note that they are interspersed with the homework assignments, such that there
should not be any homework assignment due on a test date. Note that due to popular convention, the
quizzes
will be known as tests
henceforth, and cover only parts
of the material. They are NOT cumulative. The first test will cover the first five weeks of the
class, and the second test will cover weeks six though ten.
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 | Tuesday & Thursday | 14:00 [2:00 PM] | Friday May 8th |
The final is a cumulative exam, 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.
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 computer in the Keck Lab on campus. |
|
You should download and install the Python environment from the Python downloads site.. The latest version at this writing is Python 3.13.1. If you are working on a Mac computer, you may have Python installed already; however, it is likely not the latest version and the versions are quite different. The version that is shipped with the Mac O/S is usually 2.7 — much has changed! PLEASE READ THE FOLLOWING NOTES PARAGRAPHS!
NOTES: On windows computers, you'll need to download the installation package and do the
whole self-install
thing. That will usually put the python executable
into your operating system search path. If it doesn't we'll work through it in class or in office hours,
whichever makes more sense for how much time it will take in class. I'll explain all this in class as
well.
NOTES: On Mac computers, there is a very easy way to install using homebrew. There are very explicit directions available at this web page. I walked through this set to install homebrew and then install python on a mac mini and it works great. BE SURE TO FOLLOW ALL THE DIRECTIONS, even the steps that show up in the terminal window after brew is installed. Otherwise, brew won't be in your search path. I'll explain all this in class as well.
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 Python won't recognize [like those slanted quotes]. 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
or vim
or gvim
editors, but they take some
getting used to and are rather an acquired taste
unless you are going to be doing a great deal
of programming on UNIX or Linux.
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 Pytest
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
youhave downloaded both files, follow the Getting Started
instructions at
this location.
There will be no 'outside' extra credit given in this course. There are a couple of problems in the set of homeworks which are optional and will provide extra credit on those particular assignments if you so choose.
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, which will be rounded to the nearest integer as appropriate:
| Evaluation Item | Weight |
|---|---|
| Homework [total, all 5] | 25% |
| Github config correct | 05% |
| Quiz #1 | 15% |
| Quiz #2 | 15% |
| Final Exam | 20% |
| End-of-semester Project | 15% |
| Class Participation | 05% |
| 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 [optional].
| |
| Percent | Letter | Rating and Achievement |
|---|---|---|
| 97 - 100% | A-plus | Professional quality work; outstanding [Note that the highest letter grade in PROWL is Anot A-plus] |
| 93 - 96% | A | |
| 90 - 92% | A-minus | |
| 87 - 90% | B-plus | Entry-level quality work; above average, shows extra effort and interest |
| 83 - 86% | B | |
| 80 - 82% | B-minus | |
| 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 spring |
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.
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!
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 Policy:
Please read the revised 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
|
FAIR WARNING!!! DANGER WILL ROBINSON!!! FAIR WARNING!!! 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 nothard-codevalues. NO MAGIC NUMBERS! FAIR WARNING!!! DANGER WILL ROBINSON!!! FAIR WARNING!!! |
|
Attendance, Absences, and Participation
Students are expected to attend class regularly and be prepared to engage in discussions based on course materials and experience. E-mail notice of absence no later than the day of absence is expected. Unexcused absences will result in point deductions from the attendance/participation total. More than four absences might result in student not passing the class.
The university bulletin specifies attendance criteria as follows [click on 'attendance' from the menu to see reference]:
Class attendance expectations and consequences for absences from class are left to the discretion of individual instructors and shall be announced by the faculty member at the first class meeting or listed on the class syllabus. Students are accountable for all course assignments, whether or not the assignments were announced during an absence.
In order for a student to earn academic credit for a course, they must be enrolled officially in the course. Students who are not registered in a class are not allowed to attend a course, submit coursework, or take an exam including the final exam.
Although attendance is not mandatory according to the university, it is in your own best interest to attend every class. Much of the material will be discussed and elaborated upon in person, so counting on the books or the web pages or the recorded lectures for all required information will not necessarily provide you with everything you'll need for success. In addition, there may 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 that has more to do with your knowledge than with your grade.
Expected Workload
In 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 work sessions. This work will consist of homework, a project, watching and commenting on some videos about software projects and related topics, and reading/study of textbook material.
Course Evaluations
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 in BrightSpace. 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. Please take the time to submit this important information!
Academic Honesty and Integrity
| 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
Academic honesty includes the appropriate use of technology as an aid for learning and productivity. This includes but is not limited to LLM-based generative artificial intelligence tools such as ChatGPT, Gemini, and Copilot.
Modern GenAI provides fast solutions to a variety of computing problems but must be used responsibly to get the most out of your education. GenAI will not always be helpful, especially when asked to write code for scenarios it cannot recognize. It cannot independently validate the code that it produces, and will frequently produce bugs and security vulnerabilities, making things worse for you. It will not be available for job interviews. As a student and future software professional, you have a moral and ethical responsibility to deeply understand every line of the software you author and should therefore employ GenAI in your coursework sparingly, especially when its use might rob you of the stretch-zone learning that comes from crafting programs on your own.
That said, there are several acceptable use cases of GenAI in programmatic assignments, including:
Remember the four
A's:DO use technologies such as GenAI to Augment ✅, Amplify ✅ and Accelerate ✅ your learning;
NEVER use technology to Avoid ❌ learning.
Be Responsible!:
Generally, using GenAI and related tools without knowing what you are doing often leads to poor homework submissions that rarely achieve a grade higher than an F on their own merits, simply due to hallucinations and an inability to carry out tasks as they were assigned [even with good prompts].
Also, professors and TAs are GenAI users themselves and will be able to easily detect inappropriate student use of these tools. The teaching staff will try to steer you back on track should we feel like you are giving up on your learning.
If you would like to use GenAI appropriately as a learner, see this short introductory article. And if you are a TA, see this article by Jeff Olson on how to help teach students to use GenAI.
Special Accommodations
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.
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 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! 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.
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 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 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 will be held in person in my office, Doolan 220.
I am also always available by e-mail at: my LMU mail address
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, so it is important for me to have an email address
which you will check on a regular basis.
I am on slack, but I don't use it or check it very often so you are better off e-mailing me if you need a quick turnaround. If you don't mind waiting a day or so, then slack can work.
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 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.