1 Syllabus


1.1 General syllabus

Note: click on this, and actually read it; it’s part of the syllabus:
../../ClassGeneral/Syllabus.html

1.2 Attendance (in-person or online)

If you have not logged in and completed the introductory activities within all the course resources by the second week of class, you will be administratively dropped from the class, and not re-admitted!

1.3 Course description

Short description:
This course provides a rigorous introduction to computational problem solving, thinking, and debugging, for those with little-to-no experience in computer science. Language-agnostic foundations focus on pseudo-code, flowcharts, and software-based code tracing, then build to programming in a high level interpreted language, with a focus on data and modeling.

Full description:
This course provides students with a rigorous introduction to computational problem solving, thinking, and troubleshooting. It is intended for those with little to no experience in programming or computer science. Language-agnostic foundations will include focus on pseudo-code, flowcharts, and software-based code tracing, then build to programming methods. The class will employ software design processes and principles in programming progressively larger modeling projects (games), in a high level interpreted programming language. Discussions of software design philosophy and methods will include modularity and code re-use, test-driven development, progressive enumeration, Unix code design philosophy, object-oriented programming, and others. The course includes thorough coverage of the general systematic process of using scientific hypothesis testing for finding the causes of problems in technological and software systems, namely troubleshooting and debugging.

1.3.1 Prerequisite

1.4 Free and open textbooks and resources

Required readings and activities will be assigned from these materials:

Part 1 - How to use a computer, bash, Linux, and virtual machines:
My course pages: Content.html

Part 2 - Python3 language basics and creating interactive models (a.k.a. games…)
https://allendowney.github.io/ThinkPython/
http://inventwithpython.com/invent4thed/
http://inventwithpython.com/pygame/
http://scipy-lectures.org
https://automatetheboringstuff.com/
https://docs.python-guide.org/
https://docs.python.org/3/library/index.html
https://docs.python.org/3/reference/index.html
https://docs.python.org/3/tutorial
https://learnxinyminutes.com/docs/python3/
https://realpython.com/
https://www.learnpython.org/
https://www.py4e.com/book
https://www.python-course.eu/python3_course.php
https://python.swaroopch.com/
https://www.thepythoncode.com/
https://www.tutorialspoint.com/python3/
https://devhints.io/python

1.5 In-class programming labs

These only occur during face-to-face booked class.
About once a week, we will have in-class programming lab exercises.
You must do the following, to get credit for these labs:

  1. Be present when class starts; if you are more than 2 minutes late, you get a 0 for the day.

  2. Check out at the end of class, presenting your student ID card to the testing monitor,
    who will assign your grade for the day; if you do not check out, you don’t get a grade.

  3. Complete the activities within class time.

  4. Not use any outside resources, such as the web; doing otherwise is cheating.
    The only acceptable resources to use in class during the lab are:
    the python command line help or
    help at the python terminal, or Spyder IDE.

1.6 Extra practice

If you want extra practice implementing computational solutions to a wide variety of problems and algorithms,
with auto-graded correctness, then check out Kattis:
https://open.kattis.com/