Course Syllabus
ATLS1300 - Computational Foundations1
Summer 2021
Lectures: M-H 11:20-2pm, cuboulder.zoom.us/my/zamore
Instructor: Shaz Zamore (Dr. Z) - shaz@colorado.edu
---
COURSE DESCRIPTION
Computational Foundations I explores computation as a powerful tool for creative design and expression. Students learn the fundamentals of creative coding, computational thinking, and object-oriented programming. Hands-on topics include generative art and design, interactivity, animation, and visualization.
This course will primarily use Python, and the Anaconda suite, so you will also gain exposure to Python throughout the semester. You will gain some exposure to other languages toward the end of the course.
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
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 are broken up into 15-20 min segments where new topics will be taught and students will have the chance to implement the new skill. Lectures will often start with a round-robin as a way to review content, or share completed work.
SHOW & TELL
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.
REQUIRED TEXTS
The optional text for this course is Python Crash Course by Eric Matthes (2nd edition). It is available to loan at CU libraries. There is also an eBook available through CU libraries.
I will rely heavily on interactive Notebooks that will help you practice new concepts. There will be content to read or watch on your own time. These viewings and readings are to be completed BEFORE the day that they are listed on the schedule.
REQUIRED TECHNOLOGY
You will have to use your own computer for coursework. We will primarily be working with Python, using Anaconda and online resources like 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.
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. This will allow you time to code in class, and get help if you get stuck.
ONLINE RESOURCES
Canvas & Github Classroom
You can sign in with your CU account, so you won’t need to create another login/password. You will turn in all your assignments to your small group on Canvas. We will use Canvas for posting and project descriptions. We will use Github Classrooms for in-class quizzes and assignment submission. You can access Github Classrooms through 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 40*
Final Project 30
Creative Coding Presentation 10
Technical Badges (8/11 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 get all 8 badges, but the grade does not factor into your overall 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 scripts/modules 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. You will likely be asked about borrowed code function and detail.
- 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.
MINI PROJECTS
We will work on small projects in class most days. These projects will help you practice skills and cement concepts as well as build toward your bigger tasks (Programming Challenges, Final Project, Portfolio). Some of these projects will be to fix broken code, or to create small pieces of code that accomplish a specific goal. Mini projects are due before the subsequent lecture. There are 9 Mini Projects scheduled into the course. Your lowest grade will be dropped.
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! Your lowest grade will be dropped.
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.
QUIZZES (5%)
There will be an in-class quiz each Thursday. The quizzes are a way for me to assess how well you are learning. I will adjust the course based on overall performance. The quizzes will be posted on Canvas, so personal computers are required. Again, if a laptop is needed, please give me advance notice (at least 1 day). If you do not have access, you will get a “0” for the quiz.
TECHNICAL BADGES
From the start of the semester, there will be online challenges (badges) available for you to complete. These badges involve timed questions and, usually, a coding challenge (e.g., recreate a pattern or artwork). You have 2 attempts at each badge, and you need 8/11 to pass the course. These badge challenges will test your general knowledge of programming as well as the syntax of Python. These scores aren’t factored into your final grade, however you must collect 8/11 in order to pass the course. You can attempt the badges until you pass them, up until 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. You may miss two lectures 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 online classes have its 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 |
|---|---|---|