CSC 530, Spring 2017
1 Outcomes
2 Prerequisites
3 Papers
4 Names, Times, Locations
4.1 Instructor
4.2 Lecture & Lab
5 Web Page
6 Computing Environment
7 Readings
8 Communication
9 Attendance Requirements
10 Exams
11 Grades
12 Schedule/  Homeworks
6.8.0.2

CSC 530, Spring 2017

Schedule/Homeworks Listed Here

Programming Langugage research is currently enjoying a renaissance, with conferences multiplying and reaching outward.

One of the most interesting connections is the growing one to security. In today’s society, buggy software isn’t just a headache, or a passive liability; it’s actively exploited by attackers.

Accordingly, I’m interested in exploring this connection, by building fuzzing and testing tools.

In this class, I’m hoping to gather into 1-4-programmer teams, and for each team to build a tool in a related area.

1 Outcomes

At the end of this course, you should be able to
  • build simple models of programming language semantics, and

  • see how these models relate to the languages you use every day.

2 Prerequisites

This is an upper-level course in programming languages, and assumes a familiarity with the principles of programming languages, including but not limited to notions of scope, calling convention, evaluation rules, compound data, and basic typing.

Additionally, students are assumed to have a basic understanding of simple mathematics, including the basics of set theory, very simple algebra, and some experience with proofs and basic mathematical rigor.

Finally, it requires curiosity, and self-driven exploration.

3 Papers

  1. Kyle Piddington presents: Ryan, Conor, J. J. Collins, and Michael O. Neill. "Grammatical evolution: Evolving programs for an arbitrary language." European Conference on Genetic Programming. Springer Berlin Heidelberg, 1998. local copy

4 Names, Times, Locations

Google Calendar:

See my Cal Poly Home Page for my calendar, including times & locations of labs, lectures, and office hours. You can add it to your calendar, if that makes your life easier.

4.1 Instructor

4.2 Lecture & Lab

5 Web Page

This is the course web page, its link is http://www.brinckerhoff.org/clements/2174-csc530.

6 Computing Environment

You can do your work in this class in any way you want, as long as your team agrees!

7 Readings

TBA, really.

8 Communication

This class will use Piazza. This will be the principal means that I’ll use to notify you of deadlines, organizational updates, and changes to assignments. If you’re not keeping up with the group, you’re going to be missing important information.

It’s also the best way for you to direct questions to me and/or the class. Feel free to e-mail me with personal questions, but use the Piazza group as your main means of communication. It’s possible to post anonymously, if you like.

You should already have received an invitation to the Piazza group; let me know if you need an invite.

Don’t post your code or test cases to the group; anything else is fair game.

Also, please keep in mind that I (and everyone else) judge you based in part on your written communication. Spelling, complete sentences, and evidence of forethought are important in all of your posts & e-mails. One easy rule of thumb: just read over what you’ve written before clicking post or send, and imagine others in the class reading it.

9 Attendance Requirements

I do not formally state attendance requirements.

However, an outrageously large fraction of the grade depends on your class participation; if you don’t show up, you’re unlikely to get a good grade.

10 Exams

There will be no exams in this class.

11 Grades

Grades will be determined by your performance on programming projects, your final project, and your class interaction.

12 Schedule/Homeworks

Here is the link again.