CS48—Computer Science Project

A course taught in the Dept. of Computer Science at UC Santa Barbara

The official catalog course description is:

Computer Science Project

Number: CMPSC 48
Level: Undergraduate
Units: 4

Prerequisite: Computer Science 32 with a grade of C or better. Team-based project development. Topics include software engineering and professional development practices, interface design, advanced library support; techniques for team-oriented design and development, testing and test-driven development, and software reliability and robustness. Students present and demonstrate final projects.

This site is maintained in this github repo: https://github.com/ucsb-cs48/ucsb-cs48.github.io

  • CSV files—reading and writing CSV (Comma Separated Value) files in Python
  • dictionaries—Mappings from keys to values
  • files—reading and writing files in Python
  • Flask: —Python Webapp Framework
  • for loops—for loops in Python, from basic to advanced
  • format—dealing with stuff such as print('a={0:5} b={1:7}'.format(a,b)
  • functional programming—e.g. using iter, list comprehensions, map, filter, etc.
  • json—Access JSON data in Python
  • MacOS—Using Python on MacOS
  • main blocks—All about that crazy looking `if __name__=="__main__":` thing that you see in some Python code
  • OOP: —Object Oriented Programming in Python
  • pytest—Unit Testing with the pytest module
  • Python 2 vs. Python 3—Understanding the difference and why it matters
  • scientific computing—Python tools for science and data analysis
  • Python: selenium—Automating a web browser (for web scraping)
  • Python: unittest—module for test-driven development in Python

  • Bower—A general Package Manger for web app components
  • Browserify—Package up npm modules into a js file you can include on client side web page
  • JavaScript—Getting Started with Learning JavaScript
  • JQuery—A library that makes JavaScript easier to use.
  • Node—Making web apps using server-side JavaScript using node.js
  • Node: MacOS—Installing and working with Node, npm, nvm on MacOS

Certainly errors in software are more difficult to fix than errors in books. In fact, my main conclusion after spending ten years of my life working on the TEX project is that software is hard. It’s harder than anything else I’ve ever had to do. While I was working on the TEX program, I was unable to do full-time teaching. Although I love teaching, I had to take a year off from it because there was just too much to keep in my head at one time. Writing a book is a little more difficult than writing a technical paper, but writing software is a lot more difficult than writing a book.

Turing Award winner Donald E. Knuth, from All Questions Answered, lecture presented by Donald Knuth on October 5, 2001, at the Technische Universität, München, Germany. Appeared in Notices of the AMS 49:3, pp. 318-324.