Plato, then programming?

Studying “Liberal Arts and Sciences” means that, when choosing my subjects, the only limits are my abilities and interests. Following a semester of Directed Studies focusing on the interpretation of the basic works of the Western civilization, I chose to go more technical. And even though Yale is no MIT or Matfyz, it’s been going very well.

Studying “Liberal Arts and Sciences” means that, when choosing my subjects, the only limits are my abilities and interests. Following a semester of Directed Studies focusing on the interpretation of the basic works of the Western civilization, I chose to go more technical. And even though Yale is no MIT or Matfyz, it’s been going very well.

Strictly speaking, I’m enrolled in just one subject actually in the CS Department, yet I am taking four courses. And I’ll get a grade from just two of them. How come?

The first graded course is Introduction to Computer Science. It’s the only one of the four that is purely theoretical: It uses a Lisp language dialect (to be specific, Scheme R5RS) to teach recursion (since it wouldn’t be possible without it in Lisp), computability (e.g. the halting problem and Turing machines), logical circuit design, vacuum tube computer design basics, etc. Basically, we get a “problem set” every week – a set of tasks that usually take me six hours to solve. Although only a handful of programmers use Lisp/Scheme today, and there is little direct applicability involved, it’s probably the one subject in my schedule that I like the most. The principles of a functional language are well transferable to any other “level”.

In terms of difficulty, it’s a good match to Introductory Data Analysis offered by the Statistics Department. But I made it difficult for myself, for the most part – I personally decided to skip the introductory statistics course and learn whatever I find I need to as I go. Not a great idea. Although Professor Jay Emerson uses “R”, a statistical interpreter that is slightly more intuitive than Stata or Matlab, this course places emphasis primarily on correct statistical thinking: “Never Trust Your Data” is the motto. Just as Introduction to Computer Science, this subject, too, has lengthy homework; the difference is that the Introductory Data Analysis has no tests or exams. Our grade is based equally on problem sets and the final statistics project. I’m not quite sure what data to analyze at this point – but I’m looking forward to it.

The other two courses have no grades, since they’re unofficial. The first is Introduction to iOS, that is to say, programming for iPhone in Objective-C, taught by a team of more experienced students. Their initiative is called HackYale for this semester, they are teaching three more courses for beginners and intermediates. The second course has somewhat more official infrastructure, as it’s a part of my job. While I primarily work for the Yale Student Technology Collaborative as one of the “IT crowd”, helping students with software and hardware problems, STC develops applications for its own purposes and for third parties, and it offered us teaching in team development at Ruby on Rails. Practicality is paramount: I hope to have Git and Rails to be second nature by the end of the semester.

What’s great is that adventure does not end with classes. The Yale Hackers student group holds HackNights – evenings with lectures, help and pizza – as well as the Yale Hackathon, a full-weekend competition for the best startup. (I participated on a non-competitive basis and completed a PHP algorithm to facilitate the assignment of Directed Studies students to suitable discussion groups. Then, doing my presentation page, I realized why everyone – EVERYONE! – in the room had moved to Rails a long time ago: unlike solving an interesting algorithmic problem, creating the outer shell of an application manually from the scratch is hopelessly boring.) Our student council also holds the annual App Challenge with prizes for student programmers whose applications improve student life the most; I am involved in a project, so you can keep your fingers crossed for me.

So yes, it’s possible to go from Plato to Python and from Ovid to object programming. My next plan is, for the time being at last, to swap Python for psychology in the fall (behavioral economics calling!), microbiology (long live system modeling!), and theoretical mathematics. Even at Yale, they won’t let you obtain your Bachelor’s degree in Everything (see the pic) so I’ll have to declare my major one year from now; at this point, I really appreciate being able to garner whatever experiences and skills that I think will serve me best.

More blog articles

All news