CS 105L Introduction to Programming

Course Information

Class time: 9:30 AM - 10:45 AM

Classroom: Centennial Engineering Center 1041

Piazza: http://piazza.com/unm/spring2020/cs105l
use this to communicate with the instructor and discuss material with the class

LoboGit: https://lobogit.unm.edu/trilce/cs105
use this to keep track of the readings, class materials, and other resources

Hackerrank: https://www.hackerrank.com/cs105l
use this to complete your individual labs

UNM Learn: https://learn.unm.edu/
use this to turn in peer-programming labs and projects

Instructor: Trilce Estrada

Office: Farris Engineering Center 2390

Office hours: Tuesday 1:00 - 3:00 PM and Thursday 12:30 - 1:30 PM

Appointments: https://calendly.com/trilce-estrada

Teaching Assistant:TBD

Office: TBD

Office hours: TBD

Course Description

Introduction to Computer Programming is a gentle and fun introduction to the art of programming. Students will learn the fundations on how to think like a computer scientist, design programs, and implement solutions in a high level programming language. Projects will combine computing, art, and imagination to engage students with core principles of programming.

Core Topics

Core topics include variables, data types, functions, control flow, conditionals, loops, abstract data types like lists, tuples, dictionaries. Introduction to object oriented programming. Error handling and exceptions.

Course Objectives

By the end of the course students will be able to:
- Apply computational thinking to design programatic solutions to simple problems.
- Understand and be able to use in practice abstract data types.
- Know the fundamental notions of object oriented programming.

Text Book

How to Think Like a Computer Scientist by by Peter Wentworth, Jeffrey Elkner, Allen B. Downey, and Chris Meyers. Free online book



Labs are the core of this class. Practicing coding is the only way to become a proficient programmer. There are two types of Labs in this course: Individual Labs, and Peer-programming labs. Students are encouraged to discuss labs on piazza (e.g., errors, debugging, general instructions), but code cannot be shared. Labs adhere to the academic honesty policy listed below

Individual Labs: The student is required to complete individually a series of lab exercises during their lab section. Most of them are small coding exercises in https://www.hackerrank.com/cs105l. Each lab has to be completed by the end of the week it was assigned on. Labs are due on Sunday night.

Peer programming Labs: These are done in pairs (no exceptions!) and they have to be turned in through UNM Learn https://learn.unm.edu/ using your NETid credentials. Specific intructions for the deliverables and grading rubrics are posted in the UNM Learn assignment. Peer groups are assigned at random, if students experience hostility within their assigned group, they are encouraged to talk to the TA or instructor, reassignments are possible.

Late labs will be accepted only within the following policy: Every student has 5 free days to be used at their own discretion across the multiple labs. Once a student has used all of his/her free days, no other late lab will be accepted.

Labs account for 40% of your final grade.


Readings in this syllabus are mandatory, you can expect short individual quizzes every week. Those quizzes will be graded and they account for a large 30% of your final grade. Quizzes are done first thing in the morning if you are late 5 minutes that may mean that you missed the quiz. If you have an excused absence and missed a quiz, you can make up for it by writing a 2-page summary of the reading, your grade on the assignment will be your mean quiz grade at the moment. If your absence is unexcused, you cannot make up that quiz.


This class has no formal exams, instead students will be evaluated with multiple small quizzes.


Projects are a fun way to apply what you have learned by materializing abstract concepts into practical problems. Projects will combine art, imagination, and computing to create multimedia. We will have 2 projects: Tentative schedule is as follows:

Project 1. release on week 2, due on Week 10 (Video)

Project 2. release on week 11, due on Finals week (Style transfer collage)

You can discuss projects with other classmates but all the code have to be written by you and your partners. Any student suspected of plagiarizing code will be prosecuted according to the University guidelines.

Project deliverables have to be uploaded to UNM Learn https://learn.unm.edu/. No late projects will be accepted.

Projects can be made in teams as specified by their rubric.


Participation is the barometer of the class. Based on it I can determine if the pace of the course is too fast or too slow, it helps me to spot pitfalls and misconceptions, and it helps you to reinforce the material you learned.

The student can expect to have simple exercises frequently. Some of these daily assignments will be done in groups specified by the instructor and they will account for the participation grade of the course. Make up assignments will be allowed only if the instructor or TA were informed of a documented absence before the quiz took place.

Participation accounts for 15% of your final grade and won't be given for granted. You are required to participate either in class or electronically (through Piazza).


Grades will be based on your earned points, following this grade scale. You need to get the specified number of points or more to obtain the grade from the same column. Scores will be rounded to the closest integer value.

Incomplete can be assigned only for a documented medical reason. Change of grade to CR/NC after the semester deadline will be granted ONLY under special, documented extenuating circumstances.

A (95), A- (92), B+ (87), B (85), B- (82) C+ (77), C (75), C- (72), D+ (67), D (65), D- (60), F (le 60)






Academic Honesty

Unless otherwise specified, you must write/code your own homework assignments. You cannot use the web to find answers to any assignment. If you do not have time to complete an assignment, it is better to submit your partial solutions than to get answers from someone else. Cheating students will be prosecuted according to University guidelines. Students should get acquainted with their rights and responsibilities as explained in the Student Code of Conduct

Dean of Student's Academic Integrity/Honesty
Student code of conduct

Any and all acts of plagiarism will result in an immediate dismissal from the course and an official report to the dean of students.

Instances of plagiarism include, but are not limited to: downloading code and snippets from the Internet without explicit permission from the instructor and/or without proper acknowledgment, citation, or license use; using code from a classmate or any other past or present student; quoting text directly or slightly paraphrasing from a source without proper reference; any other act of copying material and trying to make it look like it is yours.

Note that dismissal from the class means that the student will be dropped with an F from the course.

The best way of avoiding plagiarism is to start your assignments early. Whenever you feel like you cannot keep up with the course material, your instructor is happy to find a way to help you. Make an appointment or come to office hours, but DO NOT plagiarize; it is not worth it!.


Attendance to class is expected (read mandatory) and note taking encouraged. Important information (about exams, assignments, projects, policies) may be communicated only during lecture time. We may also cover additional material (not available in the book or in slides) during the lecture.

If you miss a lecture, you should find what material was covered and if any announcement was made. If you have unexcused absences, this may result in participation points being deducted. Excused absences include sickness, attending conferences, job interviews, and similar. Even if your absence is excused, it is your responsibility to find out what material you missed. The professor is happy to answer specific questions regarding the lecture, but cannot go through all of the missed material on a one-to-one basis.

Excused absences have to be notified to the TA and instructor (through a piazza private post) at least 24hrs in advance, sickness has to be justified with a doctor's note


In order to facilitate interaction between students and to promote a broader participation, I created a Piazza group. Use the Piazza public group to ask general questions about homework, exams, projects, and lectures. You can also paste small snippets of code to clarify an idea. Students are encouraged to answer each others questions. Recall that your thoughtful participation in this forum accounts through your final grade. Use Piazza private posts to ask for excused absences and other personal matters. Always cc the class TA in those cases. Piazza is a discussion forum for the class and members are expected to conduct themselves with respect by posting comments and replies only in the context of the course.


I value student's opinions regarding the course and I will take them into consideration to make this course as exciting and engaging as possible. Thus, through the semester I will ask students formal and informal feedback. Formal feedback includes short surveys on my teaching effectiveness, preferred teaching methods, and the pace of the class. Informal feedback will be in the form of polls or in-class questions regarding learning preferences. You can also leave anonymous feedback in the form of a note in my departmental mailbox, under my office door, or using this form. Remember that it is in the best interest of the class if you bring up to my attention if something is not working properly (e.g the pace of the class is too slow, the projects are boring, my teaching style is not effective) so that I can make the corrective steps.

Title IX

Our classroom and our university should always be spaces of mutual respect, kindness, and support, without fear of discrimination, harassment, or violence. Should you ever need assistance or have concerns about incidents that violate this principle, please access the resources available to you on campus, especially the LoboRESPECT Advocacy Center and the support services listed on its website http://loborespect.unm.edu/. Please note that, because UNM faculty, TAs, and GAs are considered ”responsible employees” by the Department of Education, any disclosure of gender discrimination (including sexual harassment, sexual misconduct, and sexual violence) made to a faculty member, TA, or GA must be reported by that faculty member, TA, or GA to the university’s Title IX coordinator. For more information on the campus policy regarding sexual misconduct, please see: https://policy.unm.edu/university-policies/2000/2740.html


In accordance with University Policy 2310 and the Americans with Disabilities Act (ADA), academic accommodations may be made for any student who notifies the instructor of the need for an accommodation. If you have a disability, either permanent or temporary, contact Accessibility Resource Center at 277-3506 for additional information.

Schedule at a glance


Week 1: Computers and computational thinking
Week 2: Hello World!
Week 3: Programming little turtles and functions
Week 4: Conditionals and fruitful functions
Week 5: Iteration
Week 6: Strings and Tuples
Week 7: Lists
Week 8: Dictionaries
Week 9: Spring Break
Week 10: Midterm project
Week 11: Files and Images
Week 12: Classes and Objects
Week 13: Object Oriented Programming
Week 14: PyGame and Recursion
Week 15: Modules and Matplotlib
Week 16: Error handling and exceptions
Week of finals: Final project due

Please refer to UNM Learn > Course Information, for updated schedule, readings, and resources