Course Syllabus
Lectures: TUES, THURS 2:20 PM - 3:35 PM,
in person: ATLS 100, virtual: cuboulder.zoom.us/my/zamore
Instructor: Shaz Zamore (Dr. Z) - shaz@colorado.edu
Learning Assistants:
Suraj Greenlund (suraj.greenlund@colorado.edu),
Mallory Benna (mallory.benna@colorado.edu),
Apoorva Kanekal (apoorva.kanekal@colorado.edu),
Melanie Sharif (melanie.sharif@colorado.edu)
Office Hours:
Dr. Z- Tuesdays 3:35–4:55 p.m. (in person) ATLS 208 - The Hackery
Suraj - Mondays 3-4 p.m. (virtual) Zoom link
If you are coming to office hours, please sign up first. Sign up by pair/group only.
|
011 |
Fridays |
9:10a - 10:25a |
In Person |
Mallory Benna https://cuboulder.zoom.us/my/mallorybenna |
|
012 |
Fridays |
11:30a - 12:45p |
In Person |
Suraj Greenlund |
|
013 |
Fridays |
1:50p - 3:05p |
In Person |
Melanie Sharif melanie.sharif@colorado.edu |
|
014 |
Fridays |
4:10p - 5:25p |
In Person |
Apoorva Kanekal |
---
COURSE DESCRIPTION
Computational Foundations I explores computation as a powerful tool for creative design and expression. This course is designed for the absolute beginner, with adaptations for experienced programmers. Students learn the fundamentals of creative coding, computational thinking, and object-oriented programming. Hands-on topics include generative art and design, interactivity, animation, and data visualization. Because of its value in the job market, this course will primarily use Python, and the Anaconda suite.
COVID19 MODIFICATIONS
This course is a hybrid course, with in-person recitations. Hybrid means that we will default to in-person, however, it is to the LAs and my discretion whether the course will meet in-person or not. We will alert you in a timely fashion, and behave in conjunction with University policies and announcements. Ultimately, it is our responsibility, each, to keep our community safe. Students are encouraged and expected to keep safety and health a priority inside and outside of physical campus spaces. When meeting in person, masks will be required.
PRE-REQUISITES
A basic understanding of algebra, geometry and trigonometry is required for this course. (e.g. Pythagorean Theorem, SoCahToa, Radians, Unit Circles, etc.). Here is a refresher if you are feeling rusty: https://www.youtube.com/watch?v=6hjr4n4MCPA
We will review several mathematical concepts in the course. No programming experience is required!
COURSE OBJECTIVES
- That you understand and appreciate what it means to “think computationally”
- That you become familiar with programming as a creative tool
- That you understand the fundamental structures and syntax of programming in Python
- How to use basic algebra and geometry to create visual and auditory patterns,
- How to use basic programming structures like loops, conditional logic, variables, and event-handlers
- How to work with data structures, including objects and arrays,
- How to locate and correct errors in programs
- That you will produce some amazing creative coding projects that you will be proud to include in your portfolio!
WHAT WE WILL DO
This class is a mix of technical instruction (both inside and outside the classroom), readings, viewings, lectures, workdays, and critiques. The course is structured around a series of creative programming exercises, a creative coder presentation, and a final project. Lectures will often start with a round-robin as a way to review content, or share completed work.
SUGGESTED TEXTS
There are not required texts for this class. However, I do recommend and will assign reading from Python Crash Course by Eric Matthes (2nd edition). You do not need to purchase this book, and prior editions are acceptable. It is available to loan at CU libraries. There is also an eBook available through CU libraries.
I will also link and assign various readings and videos throughout the semester. Viewings and readings are to be completed BEFORE the day that they are listed on the schedule.
COURSE SCHEDULE
Weeks 1-3: UNIT 1 - Variables
Weeks 4-5: UNIT 2 - Flow control (loops and conditionals)
Weeks 6-8: UNIT 3 - Program building & functions
Weeks 9-10: UNIT 4 - Object Oriented Programming
Week 10-12: UNIT 5 - Sound, Audiovisulaization & APIs
Weeks 13-15: Review & Final Project
Each week, we’ll have 2 lectures that cover new topics and have a practice period. On Fridays will be a recitation for dedicated programming time. Pseudocode is due at the end of recitations.
REQUIRED TECHNOLOGY
You will have to use your own computer for coursework. We will primarily be working with Python, using Anaconda and online resources, such as repl.it. The installation instructions will be posted online, so working on your own machine will make things much easier for you. If you do not have a laptop, or access to one, please contact me, or let me know no less than an hour before class if you will not have yours, so I can provide a loaner.
CREATIVE CODERS
Throughout the semester I will introduce you to the work of several designers, artists, and creative coders who use programming in a wide range of practices, and careers. The goal of this is to show you how useful (some would say necessary) programming is as a creative skill in today’s professional landscape. You will also be invited to show your work and creative coders you find to the class. This is a great way to share methods, techniques and inspiration you’ll encounter throughout the course.
IN CLASS WORK/OUT OF CLASS WORK
I want to use in-class time as effectively as possible. Using class-time for technical demos is a waste of your time, therefore the bulk of the technical instruction will happen outside of class via assigned readings, viewings, and tutorials. The readings and extra assignments are designed to help you apply the technical instruction to your projects. This will allow you time to code in class, and get help if you get stuck.
ONLINE RESOURCES
Canvas & Github Classroom
For Canvas, you can sign in with your CU account, so you won’t need to create another login/password. We will use Canvas for posting and project descriptions. You will turn in all your assignments and certain in-class quizzes on Github Classrooms. You can access Github Classrooms through a link on Canvas.
HELP!
It is completely normal to very likely you’ll need help in this class! We will often get bugs in our code that can be hard for us to find and having someone else look at it can really be helpful. When you have a problem with your code:
- Ask your peers first! Post your question to the discussion topic for the given Programming Challenge or Project (e.g. PC01 Help) and don’t forget to post your code.
- If that doesn’t resolve your problem, ask your LA or Dr. Z.
You must use your Colorado.edu email account for this course. Please check your email and the Canvas regularly. I will notify you of all class cancellations and scheduling changes via the class website and/or email. It is my goal to respond to all emails within 24 hours on weekdays, 48 hours on weekends. If I fail to reply within this time frame, feel free to resend. Please put ATLS1300 in the subject.
Also, do your best to send me an email from your Colorado.edu account. I am not allowed to respond to non Colorado.edu email accounts. For the sake of efficiency (and sanity), I only check class-related email during certain times during the day, typically in the early morning.
GRADES
Category Points
Programming Challenges 35*
Final Project 30
Creative Coding Presentation 10
Technical Benchmark (>70% required): 0**
________________________________________________________
Total 100
*you can earn extra points for going over and above the requirements of the pair programming challenges
**you will not pass the course if you do not score over 70% on the benchmark exam, but the grade does not factor into your numerical grade.
CODE AND PLAGIARISM
In this class, we will use other people’s code as a way to learn, and you are encouraged to look at and play with online examples and tutorials. If you use someone else’s code in a project or recitation, you are required to give credit to the author of that code in the comments. Turning in someone else’s code as your own is considered plagiarism and will be dealt with according to the University’s plagiarism policies.
General guidelines:
- No more than 20% of your recitation or project should be code snippets from other sources.
- You must give a citation in the code comments for all code from other sources. Modified codes must be cited as “modified from”.
- You must be able to explain in detail all the code that you use from other sources.
- If in doubt, ask Dr. Z!
GRADING SCALE
A = exceptional work
B = above average work
C = average or competent work
D = below average work
F = unsatisfactory work
In order to counteract grade inflation, I do not give out A’s easily. If you turn in all your work on time (and if it is satisfactorily completed), and if you attend class and participate, you are ensured a C. A’s and B’s are for students who excel beyond average and competent work. This class is not graded on a curve, so your assignments will not be compared to your classmates! If your work meets the rubric requirements, and reflects your creative talent, you’ll be fine. Remember, comparison is the killer of joy.
QUIZZES
We will have quizzes in class once a week. These quizzes will help you practice skills and cement concepts as well as build toward your bigger tasks (Programming Challenges, Final Project, Portfolio). Quizzes will be largely multiple choice, but some of these quizzes will be to fix broken code, or to create small pieces of code that accomplish a specific goal. Your lowest 2 grades will be dropped. High scores (>90%) will get you a badge. 9 badges will give you an automatic passing grade for the Benchmark practical.
PROGRAMMING CHALLENGES
For most weeks, you will come to the Lecture having watched a series of videos tutorials and/or read material that I have previously assigned. In the Recitation, you will work on a “Programming Challenge” that utilizes the concepts from the video tutorials. Some of these challenges will be completed in pairs (i.e. Pair Programming Challenge). As you can see, it is important that you come to class having watched and digested the video tutorials so that you and your partner(s) can successfully complete the challenge. The challenges are due on Mondays at 10:00 p.m. and each person must turn in a copy of the completed challenge. You will turn in all your programming challenges to Canvas. Each partner must submit code of their own to receive credit!
CREATIVE CODING PRESENTATION
Later in the semester, each of you will be giving a 5-minute presentation on a creative programmer of your choosing. You will be presenting these in lecture. Each person in the group will submit a review of other students’ contributions after their presentations.
FINAL PROJECT (30%)
FINAL PROJECT EVALUATION RUBRIC
A detailed rubric will be provided when the final project is assigned, but my general method for evaluating creative projects is:
- Technical (33%)
- Design/Aesthetic (33%)
- Creative/Conceptual (33%)
- Project Plan (1%)
FINAL PROJECT CRITIQUES
Your final projects will be critiqued after your presentation in the last lecture, July 2nd. Any extra critiques will take place during the finals period (TBD). We will use the final period as the final due date for turning in all class work. Please make travel plans accordingly.
TECHNICAL BENCHMARK
Towards the end of the semester we will have a technical benchmark exam. The benchmark will be given in your recitation and will test your general knowledge of programming as well as the syntax of Python. This is a multiple choice exam, with questions similar to those on the weekly quizzes. This exam isn’t factored into your final grade, however you must pass this exam in order to pass the course. You can retake the exam until you pass it, up until the final week of classes or during the final exam period.
LATE WORK
Late work will not be accepted! Due to the fast pace of this course, late work will not be graded. If you have not finished a project, you will need to show what you have to avoid getting a “0” for the project. Submitting something is better than nothing! Make sure to backup your work! Lost and/or corrupted work is not an acceptable excuse for late work. To compensate for low scores or missed assignments, you may (re)submit assignments to an extra credit Github portfolio. Resubmissions must have all issues resolved; script must run on any computer.
COURSE CONTENT
In this class I reserve the right to show a broad range of course materials, some of which may be offensive to some people. It is not my goal to intentionally offend anyway, but should you feel offended by something you have seen or heard, I would appreciate you staying to be part of a dialogue as I welcome your perspective. If you feel that you cannot stay, feel free to excuse yourself from the Zoom room as discreetly as possible. I am always available to talk about any issues that may arise in the course. I strive to understand if not accommodate every need and perspective.
ATTENDANCE
Attendance is taken in lecture using clickers, and visually taken in the recitations. You may miss two recitations for any reason without penalty (I don’t need to know why). Use these wisely, as I will expect you to miss no more than two class recitations. I like to treat attendance like a carrot/stick: your overall grade will drop by 5% for each absence beyond the allowed two. Note that repeated and/or significant tardiness (10+ min late) will be considered as absences. Every third tardiness counts as an absence.
*All absences are treated equally (e.g. minor illnesses and injuries, oversleeping, vacations, job interviews, ski-days, family obligations and situations, etc.) so it isn’t wise to use them all at the start of the semester. Exceptions will be made for religious holidays, severe illnesses, and prolonged family emergencies.
DIGITAL DISTRACTIONS
Going to classes (online and otherwise) has their challenges. Do your best to be present in mind before and during class. We will have ample breaks and time to work during the class, so each lecture will be varied and exciting.
Part of learning how to be an adult is learning how to manage various digital distractions such as texting, emailing, and using social media. I am not going to prohibit these activities because you need to learn how to integrate these tools into your life, and prohibitions will not help you learn how to manage these activities professionally. However, during class-time, I will ask that you refrain from texting, checking your email, and using social media, as it creates a distraction for you, and more problematically, for your classmates. In the event that these activities become an issue, I reserve the right to amend this policy.
PARTICIPATION
It is my goal to make this the best possible experience for you that I can. In order to achieve this goal, I have outlined the expectations that I have for you, and what you can expect from me:
My expectations of you:
- That you attend the lecture and recitations regularly and arrive on time
- That you are “present” in class, which means:
- you have completed all the required reading, viewings, exercises, and assignments before class begins
- That you are present physically and mentally
- That you ask questions and actively participate in the class
- That you respect your classmates and the learning environment, and avoid causing unnecessary distractions
- That you are committed to your education and learning experience
What you can expect from me:
- I will do my best to make this class compelling, challenging, and relevant.
- I will take full advantage of being with each other in a physical space (e.g. we will use the class-time in the most efficient way possible).
- I will be fully present and highly prepared.
- I will be available to answer your questions either in person on online.
- I will be flexible and responsive to your questions and interests
- I will begin each class on time
UNIVERSITY OF COLORADO SYLLABI STATEMENTS
http://www.colorado.edu/academicaffairs/policies-customs-guidelines/required-syllabus-statements
By enrolling you signify your awareness and understanding of the policies contained within this syllabus and your agreement to conduct yourself accordingly.
Course Summary:
| Date | Details | Due |
|---|---|---|