4 semester hours
Mondays and Wednesdays 1:45 p.m. – 3:25 p.m. in Doolan 114
Instructor: Ray Toal, Doolan 110, rtoal@lmu.edu
Teaching Assistant(s): Lauren Campbell
Slack channel (lmucs.slack.com): cmsi1010-03-fall-2025
By the end of this course, you will be able to:
The course serves as a starting point for building the skills needed to pursue a career in software development; however, in no way should this emphasis detract students who simply have a passing interest or curiosity about programming. If you are going to learn something, you should learn it as if you were aiming for mastery.
Students will be expected to learn as part of a community of fellow students, teaching assistants, the course instructor, and other students and faculty members. Please make use of support services outside of class meetings, including our laboratories; the LMU computer science teaching and laboratory assistants are known for being friendly, welcoming, and eager to help you in your development of programming skills.
The only prerequisites are (1) a growth mindset and (2) promises to never give up, work hard, apply the feedback given to you, and have fun. Previous programming experience is not required, and in fact may even be harmful, unless accompanied by a willingness to break bad habits and start fresh if necessary. Programming, like any skill (think music, athletics, martial arts, or the trades), is best learned by making mistakes, correcting mistakes, and learning from mistakes.
Though much of the course focuses on programming principles that transcend multiple programming languages, we will of course cover one real language so you can actually write and run code. This class will teach the Python programming language, one of the most popular programming languages in the world today. Though most course material will be found in my online course notes, the book Think Python by Allen B. Downey, as well as linked online articles, tutorials, and videos.
You should also read and work your way through The Python Tutorial. It is not perfect but it is very useful.
Various papers and readings will be assigned throughout the course (including my own course notes, practice problems, and sample code). These readings will be posted on individual assignment pages. If you have projects or papers to work on, you’ll have to find some additional readings on your own. Make sure you take the time for effective self-study. Take advantage of classmates and friends; the computing industry is one of the most collaborative fields in which to work, and your course experience should reflect this.
In accordance with the LMU Credit Hour Policy, this 4-unit course will require 12 hours of work per week (including the time spent in lecture and lab).
You’ll have several homework sets containing in-depth theoretical questions and non-trivial programming problems, and quizzes and a final exam with less difficult material. To help prepare you to meet industry expectations for college graduates, programming assignments will sometimes be required to be placed in version-controlled public repositories (most students tend to prefer GitHub). Exams may cover material from lectures not previously assigned for homework, so take care to learn concepts and not just memorize technical steps and recipes to answer questions.
Occasionally, you may be permitted to work in groups; however, while only one solution set is turned in per group, all students are responsible for understanding all of its content and may be asked at any time for an oral explanation of any solution. Collaboration with other groups is fine but must be limited: you may share ideas and approaches but not solutions. You must acknowledge any help received. Acknowledgements are also required for nontrivial help obtained from online forums and AI chatbots. Academic dishonesty may result in expulsion; be certain your work meets the standards LMU Academic Honesty Policies.
Your final grade will be weighted as follows:
Letter grades are figured according to the usual scale: 90% or more of the total points guarantees you an A, 80% a B, 70% a C, and so on. Note the word guarantee: 82 points will earn you at least a B-; you might still get an A if 82 is or is near the top score. The lower bounds ensure grades measure your achievement of the learning outcomes, and can never punish you because you did very well but on the low end of a class full of high-achievers.
To ensure a degree of fairness for those who consistently perform timely course work, and to encourage everyone to pace themselves properly in completing assignments, late work is normally penalized 15% per 24-hour period. If there is an issue that prevents you from submitting an assignment on time (e.g., excellent surf conditions, personal or family issues, sickness, conference attendance, job interviews, a family ski trip, or personal emergencies), let the instructor know ahead of time.
Where assignments involve programming, the quality of your code, not just its correctness, will play a large part in determining your grade. Please refer to these resources and notes on clean code for information on expectations of code quality. Appearance of the grading policy in this syllabus constitutes fair warning of the consequences of poorly written code.
If the course has a contribution score, it will be computed by awarding you 1 point every time you: (1) correct me during class, (2) ask a profound question during class (where profound elevates the discussion in some sense), (3) answer a question during class as the first response, (4) post a good question on the class Slack channel, (5) post a detailed answer to another student’s question on the Slack channel, (6) recommend an article or video or tutorial (on the Slack channel) directly related to the course material. Such course have an expectation of 10 points throughout the semester, well-spaced. (Please do not dump 10 video recommendations on Slack during the first week of class and then shut down or ask ten questions on the day of the final.)
| When | What |
|---|---|
| 2025-09-01 (Monday) | No class (Labor Day) |
| 2025-09-19 (Friday) | Homework 1 Due |
| 2025-10-02 (Thursday) | Exam 1 |
| 2025-10-03 (Friday) | Homework 2 Due |
| 2025-10-24 (Friday) | Homework 3 Due |
| 2025-11-06 (Thursday) | Exam 2 |
| 2025-11-14 (Friday) | Homework 4 Due |
| 2025-11-14 (Friday) | Last day to drop |
| 2025-11-26 (Wednesday) | No class (Thanksgiving Wednesday) |
| 2025-12-05 (Friday) | Homework 5 Due |
| 2025-12-08 (Monday) | Final Exam |
You have the right to:
In return, you are expected to:
For online courses, I recommend your camera be turned on unless you have bandwidth problems or need to step away.
You've probably seen hundreds of these, but there are two that stand out.
Be aware of how students trick themselves into thinking they’re learning (the fluency illusion). Cramming, rereading, and highlighting do not move information from your working memory into long-term memory. Short-term working memory is not “learned.” Recognition is not retrieval!. The most effective way to load your long-term memory is through active recall with spaced repetition. Please work through Nicky Case’s interactive essay How to remember everything forever-ish. (Interested in this stuff? This article backs up the importance of recall. And this video describes how to add more learning power with interleaved studying and walk-and-talk, which gives you multimodal reinforcement.)
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, Claude, 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 AsDO 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, instructors 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.
For students with significant programming experience that are working on comprehensive projects, Gen AI use for code writing is generally acceptable, but you must (1) be able to understand, validate, and explain the generated code, and (2) cite the usage if the code you utilize is nontrivial. The use of code you do not understand is unethical and dangerous.
If you would like to use GenAI appropriately as a learner, see this short introductory article. If you are a TA, see this article by Jeff Olson on how to help teach students to use GenAI.
| Lab | Theme | Topics | |
|---|---|---|---|
| 1 | Triangle Art | Simple Programming | Python, Printing, Strings, Variables, For loops, Ranges, Functions, Running Python on the cloud |
| 2 | Command Center | Command Line | Terminal, Text Editors, Running Python locally, The Python REPL |
| 3 | Sharing is Caring | Social Coding | Git, GitHub, README files |
| 4 | Petting Zoo | Cute Animals | If statements, While loops, Break statements, String functions such as strip and lower, Input, The VS Code extensions Python and autopep8
|
| 5 | Professional Yapping | Wordplay | Lists, Dictionaries, Multiline strings, random.choice, Functions that return values
|
| 6 | Around The World | Carmen Sandiego | Multi-file programs (Modules), Import statements, Comments, Match statements, Virtual Environments, Third-Party Libraries |
| 7 | Securing the Bag | Financial Literacy | Formatting (f-strings), Arithmetic, Algorithm design, Locales
|
| 8 | Land Without Loops | Thinking Different | Simple Recursion, Conditional expressions, Floor division |
| 9 | Tower of Hanoi | Time | Multi-way Recursion, Command line arguments (sys.argv), Exceptions (raise, try, except)
|
| 10 | Family Archives | Relationships | Understanding references, Recursive structures, Classes, Classes vs. Dictionaries |
| 11 | The Real Deal | Objects | Immutability, Dataclasses, Unit Testing, Intense practice with validation and error handling, List comprehensions |
| 12 | Fractal Forest | Fractals | Recursion in images, Image libraries, RGB Colors |
| 13 | Painting Like Piet | Modern Art | Pygame, Coordinates, Shape drawing and filling, Event handing |
| 14 | Alien Invasion | UFOs | Animation, Controlling the frame rate, Default dataclass attributes |
| 15 | K'tah | Zombies | Game Design, Interactive animation, Game mechanics, Collision detection |
| 16 | Pod Racing | Simulation | Lambdas, Matplotlib |
| 17 | Farmers Markets | Data Science | Reading files, CSVs, Data Science, Pandas, Histograms |
| 18 | Trivia Time | Networking | APIs, HTTP, JSON |
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 or posted online.
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. 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. 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, 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. It is never permissible to turn in any work not been authored by you without properly acknowledging the source. Please familiarize yourself with the academic honesty policy accessible from the LMU Student Codes and Policies page.
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 in Daum Hall, as early in the semester as possible. All discussions will remain confidential. Please visit LMU DSS for additional information. Please request any needed assistance as early in the semester as possible.
Wellness. Please familiarize yourself with Student Affairs’ wellness resources.
Reporting Requirements of Sexual or Interpersonal Misconduct. As responsible employees, faculty are required to report any case of suspected sexual or interpersonal misconduct and cannot protect student confidentiality. For information about confidential counseling on campus and for general information about consensual relationships, sexual harassment, and sexual assault, please visit LMU Cares.
Emergency Preparedness. To report an emergency or suspicious activity, phone the LMU Department of Public Safety (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 LMU Emergency Management.