1 Syllabus

1.1 General syllabus

Note: click on this, and actually read it; it’s part of the syllabus:

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…)
* http://greenteapress.com/thinkpython2/thinkpython2.pdf (python3)
* http://inventwithpython.com/invent4thed/
* http://inventwithpython.com/pygame/
* http://scipy-lectures.org (a good overview for scientists or mathematicians who want to learn python)
* 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 (For experienced programmers just wanting a highlight of the language)
* https://learnxinyminutes.com/docs/python3/ (long python script to learn python).
* 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/ (more specialized topics)
* https://www.tutorialspoint.com/python3/
* https://devhints.io/python (short cheat-sheet)
* My course pages: Content.html

1.5 In-class programming labs

Note: These only occur during face-to-face booked class (regrettably not during COVID online classes).

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:

1.7 Which virtual machine / OS for this class?

OpenSuse OVA I distribute