Lecture 12

Themes

  • We thank Yale’s staff for making this semester possible, and you too can apply to join the staff and learn and teach CS!

  • It turns out, after 12 weeks, all of us now rate ourselves as "Somewhere in Between" or "More Comfortable", with no one less comfortable anymore!

  • We watch a video with staff inviting you to join them.

  • CS50 also works with high schools and colleges around the world, where CS teachers adopt the curriculum, tools, and software we use here.

  • We share a few slides showing the data we’ve gathered from you about the problem sets and lectures.

  • Recall that this course has been less about programming, but rather problem solving, and use the foundations we’ve built to learn new languages or tools that we might need in the future.

  • Problem solving, as we discussed in week 0, was taking some input, or problem, and using some algorithm to produce some output, or solution.

  • After CS50, you’re empowered to take courses in any direction of CS, whether it be software, hardware, mathematics, or machine learning. And certainly, you should be empowered to teach yourself new topics with or without the structure of a course.

  • Git is a tool we can learn. Git is a version control software, which allows us to save different versions of our code and switch between them, and track all the changes we’ve made over time.

  • Another tool we might want is a text editor for code, such as Sublime Text or Atom, which have features like syntax highlighting, autocomplete, and smart indentation.

  • A more advanced, command-line text editor is Vim.

  • And https://cs50.io/ can be used to host web applications, at least for some time. Other platforms, like Heroku or AWS, offer more hosting options. And students can get a free domain name from Namecheap, along with other free services from GitHub.

  • Soon, we’ll host the CS50 Hackathon in Cambridge, where you and classmates will work together on final projects and enjoy the company of each other, as well as a photobooth, Milo, and pancakes.

  • Finally, we’ll host the CS50 Fair in New Haven, where students, staff, and visitors will share and explore each other’s final projects. This year, we’ll be in Peabody Museum.

  • We watch a recap video of CS50 2017.

Beyond CS50

  • Some courses offered in the spring that have no other prerequisites include:

    • CS 035: 21st Century Computer Music (Freshman Seminar)

    • CS 078: See it, Change it, Make it (Freshman Seminar)

    • CS 200: Intro to Information Systems

    • CS 201: Intro to Computer Science (Prereq for most upper-level classes)

    • CS 213: Apps, Software, and Entrepreneurship

    • CS 276: Digital Humanities Apps

  • And after 201:

    • CS 223: Data Structures and Programming Techniques (after taking 201)

  • There are also more majors than just CS alone, such as the following:

    • B.A., B.S., B.A./M.A. Computer Science (talk to Prof. Aspnes)

    • CS + Math (talk to Prof. Aspnes)

    • CS + Electrical Engineering (talk to Prof. Aspnes)

    • CS + Psychology (talk to Prof. Aspnes)

    • Computing and the Arts (talk to Prof. Dorsey)

      • CS + Architecture, Art, History of Art, Music, Theater

      • This major involves 6 courses in the CS department and 6 courses in the arts, as well as applying both fields together.

  • CS 078, "See it, Change it, Make it", is a course about 3D design, where models are captured and edited digitally and produced physically. It’s also a freshman seminar, so only freshmen may enter the lottery for it.

  • CS 276, "Applications in the Digital Humanities", is a new course about how web applications can be built to solve problems in the humanities, such as:

    • Detecting and analyzing meter in poems

    • Web site to catalog, view, and analyze Babylonian collection

    • Web site to curate public art on campus

    • Assembling ancient wall paintings

  • The first half of the course will be technical, learning more about building web applications with JavaScript and Flask, as well as database design. The second half will be group work on a project in the humanities.

  • Scott Petersen, a lecturer in the CS department, talks about courses he teaches. 431 and 432 (which have more prerequisites) are advanced courses about computer-generated music, from a high and low level.

  • The Yale Open Music Initiative is a group that "explores open source hardware and software at the intersection of music, sound, and technology", informally experimenting with new technologies.

  • CS 134, "Programming Music Applications", is a course where programs and sensors are used to record and produce music.

  • CS 035, "21st Century Computer Music", is another freshman seminar where the intersection of computers and music is discussed, with less programming.

  • CS 213, "Apps, Software, and Entrepreneurship", is a course taught by Dean Jensen from the School of Management, and a combination of web application development and basics of entrepreneurship, such as identifying customers and creating solutions for their needs.

  • Prof. Slade teaches CS 200b and 201b, core courses about theory and practice in computer science. Students will learn about recursion, UNIX, computer architecture, programming, logical problems, and more. CS 201 focuses on theory, including Boolean logic, formal languages, computational complexity, and more. CS 200 focuses on practice, using Python to write more programs, working with databases and cryptography and machine learning and more.

  • Prof. Aspnes, the Dean of Undergraduate Studies for CS, also teaches CS 223, "Data Structures and Programming Techniques", a course about organizing data and our code itself. The course will use C, so students can understand computers at a low level.

  • The Computer Science major in Yale is large and has several advisors, with 5 core classes and electives in many areas, as well as a senior project. There are also mathematics-focused tracks that include advanced algorithms, among others.

  • See you at the Hackathon and Fair!