I have been regularly sifting through course material (syllabi, presentations) in MIT's publicly accessible OpenCourseWare website since the program was launched years ago.
Earlier this year, I took a further step and started delving deeper by approaching one of the courses as a student. The courses in question are graduate courses, 6.972 Algebraic Techniques and Semidefinite Optimization, and 6.883 Program Analysis in the Electrical Engineering and Computer Science Department.
I purchased some of the suggested texts from Amazon.
- Cox, D. A., John B. Little, and Donal O'Shea. Ideals, Varieties, and Algorithms: An Introduction to Computational Algebraic Geometry and Commutative Algebra. New York, NY: Springer-Verlag, 1997. ISBN: 0387946802.
- Mishra, Bhubaneswar. Algorithmic Algebra (Monographs in Computer Science). New York, NY: Springer-Verlag, 1993. ISBN: 0387940901.
- Sturmfels, Bernd. Solving Systems of Polynomial Equations. Providence, RI: American Mathematical Society, 2002. ISBN: 0821832514.
- Yap, Chee-Keng. Fundamental Problems of Algorithmic Algebra. New York, NY: Oxford University Press, 2000. ISBN: 0195125169.
I have been developing my static analysis tool without taking formal course, although I did review a number of lecture slides and academic papers. The reading list from a syllabus of another program verification course led me to purchase Logic in Computer Science (Modeling and Reasoning about Systems) and Software Abstractions, which after a couple days of reading, allowed me to come to understand the major approaches used in program verification including model checking and temporal logic.
The impetus for my self-study was my frustration with using the Internet as a resource for learning. While various sites like Google Scholar, CiteSeer, and ACM Digital Library are valuable for reading up on latest research and techniques, and many detailed lecture notes and readings for introducing computer science theories are available in PDF, learning about established approaches at the graduate-level over the Internet is inadequate (look up Grobner Bases, for example). The Internet in such cases is not a good substitute for university courses in which material is selected, organized, and designed for pedagogy.
I uncovered tricks for reading through entire contents of a book though A9, Amazon's book search engine, but admittedly prefer, Google Books Search which offers substantial excerpts and previews of many academic publications such as in modal logic, hard to find even at a university book store.
I discovered later this year the University of Washington professional masters program in computer science has video taped lectures online for all their master's course, a practice that I assume was funded by local employer, Microsoft. The site includes a Conference XP web viewer that conveniently synchronizes slides, video, and agenda for remote listening. I had at one point considered applying for a UW MSCS degree in 1996, when the program was just starting with approximately 40 students, but the course offerings then were limited, and not in areas that I was interested in (ie, Transaction Processing). The program seems to have grown significantly larger over the decade since.
My goals have since evolved so that I might actually try something more ambitious, which is to gain exposure to the whole range of courses lectures in computer science, mathematics and other disciplines that I am interested in.
I don't think that my undergraduate education was as well designed as it could have been, but it might have been through the fault of my own not interacting with my advisers more. The ease of access of university courses is such an advantage for college students coming in today. Had I been a student now, I would have learned material online before taking the course, allowing me to decide whether I want to reinforce the learning and enroll in the course. I could also listen to multiple courses taught by different lecturers to acquire a different perspective on the material.