Tuesday
Weather was pretty good today, not as good as yesterday but it remained in the high 40s. The Estonian weather gods have been truly benevolent as of late. My only complaint is the cold winds, but other than that it's been sunny and almost warm.
Coding Theory remains a challenge, I feel that I understand the material in class but when it comes to the homework...bleh. In class today we covered parity-check matrices and the notion of dual codes (when the parity check matrix of one code is the generator matrix of another).
Next course of the longest day was Religion and Politics. We had a guest lecture, a woman (whose name I did not catch) discussed how religion in a liberal democratic society usually faces 2 contradictions. One being the contradiction between freedom of religion and the general absence of religion in a public place. And two being freedom of speech and offending religions feelings. She brought up several interesting points and examples and noted that contemporary society did not know how to escape this "trap".
Once she finished lecturing she presented us with an exercise. She split the class into two groups, one of us was to argue in support of banning of wearing a niqab or any other face-covering veil. The other group would argue against that (i.e. permitting the wearing of those). I was (to my displeasure) in the group that was arguing for the banning. It's difficult to argue for something you don't necessarily support/agree with but my group managed to come up with some arguments.
Now I was of the impression that this would be a pretty relaxed thing, sharing a few ideas and whatnot. But we had to present our ideas to the class. Nobody in my group wanted to speak, so we drew names. Put all our names on a piece of paper and threw them into a hat. They asked who we'd get to pull one out, someone suggested the teacher. I rolled my eyes and reached in to grab a name, and of course.
of course, I picked my own name. At this point I was just amused, because regardless of my public speaking aversion I knew that I should take the opportunity to improve myself.
This was before the other group spoke first. Their speaker was another American and he knew his stuff. (I learned later that he was big into debate and the like.) If I didn't know any better I would've sworn he had laid out an entire argument before hand. He spoke clearly and concisely presenting arguments and preempting any counter-arguments that our group would've had. It was ridiculous, and kudos to him for speaking so well and having good arguments but wow. I felt completely shut down before I even got the chance to talk, which just made me nervous...which made me speak horribly. My group only shot me mildly sympathetic looks (but it was obvious none of them wanted to be in my place.)
Moral of the story: I don't like impromptu public speaking.
It's exciting when bits and pieces of other classes come together. I always love hearing mention of something that I've learned previously, or am currently learning. At the current moment, there's not a nice mesh of everything, but I can slowly see the pieces coming together. A mention of eigenvectors in cloud computing, familiar material about matrices in coding theory. A lot of linear algebra is involved in my courses, and I'm constantly grateful that I took the class last semester.
In cloud computing I was so hungry that it was distracting. But the topics covered were interesting, so that helped me focus. While last time we learned about what MapReduce was, this time we focused on some algorithms and specific examples of how it could be used. More talk about Hadoop, some of its usage patterns as well.
One of the most interesting points I thought the professor made was: Any big problem, when thinking in terms of MapReduce, can be solved using just a few lines of code. Especially with the introduction of combiners, it makes large problems easier to solve.
Wednesday
Today I met with my coding theory professor. Let me tell you, constantly struggling in a course completely removes my usual enjoyment that comes from learning. So, I still seek to remedy the situation. My professor was very helpful, explaining most of the problems in the first homework that I struggled with, and giving me some hints for homework 2. There were a couple of "oooooh" moments, where I finally understood something. But much of it still remains a mystery to me. Time will tell if I'll figure it all out.
Tragedy struck today. My hairdryer suddenly stopped functioning. I'm...not sure how I'll survive. I don't know that I'm prepared to replace it, and I might just suffer through without it. But, please, a moment of silence for my lost companion.
Thursday
In Secure Software Design we had a guest speaker. His name was Sven Heiberg, and he works for the company Cybernetica. The topic was internet voting in Estonia. First he discussed elections, how they were held historically, why it's important for Democracy to have elections, and how they are a legal means to gain certain kinds of power. Then an overview of electoral systems, he said that it is basically a tabulation algorithm. There are roughly 900,000 eligible voters in Estonia with 101 seats, with this, he said that there is a conflict pre-programmed in every election, because you must find a way to make everybody happy. Next the election process, which he divided into 4 stages: preparation, voting, tabulation (where the votes gathered are brought together and the distribution of the seats is calculated) and finalization. He also mentioned 4 major roles: voters, candidates, election officials and observers. He said there are 13 voting methods in Estonia, but 4 major ones. advanced (15% of these cast through internet), internet (25% of all votes), paper and postal. Around this point it appeared that he lost the attention of most of the class. In my opinion, he was going too in-depth into voting methods, focusing on the why when I felt it would be more prudent to focus on the how.
And finally, one hour later, we arrived at "i-voting" or internet voting. It was interesting that he noted he did not believe in holding elections strictly through internet voting. He said that the protocol resembled the postal voting protocol. First the voter authenticates to the server with an ID-card (remember when I mentioned those microchips in the Estonian ID cards? That's one thing these are used for), then the voter encrypts their choice with the server's public key, next the voter digitally signs the encrypted ballot with ID-card and next the digitally signed encrypted ballot is sent to the voting server. Tabulation occurs in 2 separated phases. Anonymization where the digital signatures are removed and tabulation where decryption is applied.
He then discussed the possible attack vectors regarding i-voting. An example was having a home computer with weak security, (he said multiple times that most people
hope their computer is secure, I sure wish that they would
know their computer is secure.) He introduced 3 main attack classes: manipulation attacks (classical attacks against freedom etc), revocation attacks (hoping to cancel all the i-votes, hoping to change the outcome of the tally) and attacks towards voter confidence (attempting to discredit i-voting in the attempt to discourage people from using it).
Honestly I think the lecture could've been constructed better, too long was spent on details regarding elections. What I felt should've been the main focus, (how i-voting works, security issues, steps taken to solve the problem of verifiability and integrity) wasn't discussed till the end when attention was low and the class was almost over. He even ended up going over time. It was moderately interesting at best. I had higher hopes, as I was interested to learn about the methods (which I did, but only in a general sense).
It didn't help that for almost every question the lecturer posed there was a snarky answer from someone in the class. And of course there was
that one guy who kept posing elaborate hypothetical situations and convoluted questions that really didn't contribute anything. Annnnnd of course he didn't really take into account the social cues that indicated he should stop talking. After a few interjections, every time he spoke up there was a sort of rustle of disapproval in the class. Don't get me wrong, by no means do I discourage questions and participation in lectures, BUT there is a point where it becomes an interruption instead of a contribution. Frankly, if you have that much to say then speak with the lecturer after class.
After a nice break I headed to crypto lab. We focused on attacking low-round Feistel networks. Typically a cipher utilizing a feistel network will utilize a function to encrypt something several times. If that function is only used once or twice, it's effectiveness is severely reduced. He provided us with a 1 round feistel network to begin with, and gave us some time to figure out what we knew, and how we could exploit its vulnerabilities. After we all discussed it and he provided his input we moved onto a 2 roud feistel, and did the same sort of exercise. It was a very enjoyable class, as it helped me think in a different way, but I wasn't so lost that I couldn't follow everyone's ideas.
On a semi-related note I've come to realize that while cybersecurity interests me, it's not to the point where I would pursue it as a career. I think that I'll keep it in mind, as security is an important point in CS. But I believe that my future pursuits will lie elsewhere.
Friday
Another absolutely glorious day, I even wore a t-shirt! Again, a bit windy for my tastes but it was lovely and warm in the sun and a lot of people were out and about.
Cloud computing lab was interesting, but difficult. For the first time I didn't actually finish the lab, and I'm unsure if I'll be able to. Even the instructor was struggling a bit. He generally works on it along with us, so that if we're stuck we can get hints. It was funny, because he spent quite a while complaining that it would be so much easier in python instead of java. I'm going to attempt to work on it a bit over the weekend, but as I'm running Windows on my computer I'll be unable to test it, so my submission will probably remain unchanged.
After cloud computing it was off to coding theory. We talked more about polynomials and vector representations. We learned that there is a primitive element whose powers will give all polynomials of the field and that there is a sub field that will contain all elements of the field over which the polynomial is constructed (In most of our examples this was F
2, which is the binary field containing {1,0}). We also discussed extension fields and finding out if a polynomial had roots in the field. I actually enjoyed this lesson, as comprehension came easy and I felt confident that I could answer questions on this on my own (which I did when he asked a few in class).
Unfortunately nothing like this is on the homework, which is one of my biggest complaints. I feel that there is a disconnect between in-class material and homework questions. It could just be the way the questions are posed, but I'm not sure.
In general I feel that I'm not gaining a lot academically from study abroad so far. It's true that these classes are uniquely offered and the opportunity to take them would not exist at CofC. I am enjoying most of my courses, but I feel the real value in this experience is simply being abroad. I've gained more from traveling and meeting people than I ever could in a classroom. In addition, being
completely self-reliant and having to take responsibility for everything is (and remains) a great experience for me. Even before I left for Estonia, organizing the whole study abroad trip was a big to-do. Though I was assured I'd have people helping me every step of the way, I had to do most of the work myself. Running around, getting papers signed, getting permission for things. While it sounds like an excess of busywork and leg work (which, admittedly it was) it still gave me a sense of accomplishment, and provided me with a bit of experience that I'd only had small amounts of before.
While it's still a bit early to be making generalizations on my experience here, I think that I can say with confidence that if I had to do it over I'd change a few things. The main one being classes. I wouldn't have taken such challenging courses. While certainly one or two hard classes wouldn't be out of the question, the course load I'm taking now isn't the most pleasing. I would also take a few more social sciences. Though the math/CS courses here are unique, the information in them is pretty universal. With a social science course (religion and politics being the main example) I've been gaining some interesting insights into the mindset of another country. Now that's really something you cannot get anywhere else.
In general, I'd just like to have less time worried about my classes and more time to travel and enjoy my stay here. That's not to say I'm unable to do it, but a few of my classes (looking at you Coding Theory) create stress and inhibit my enjoyment because I'm so worried about them. Of course part of that is just my personality, but it's pretty darn annoying nonetheless.
On a happier note, I had cake again today! After classes were through I was hungry and my will was weak, so I caved and stopped at Werner again. Once there I ran into Sarah, who I sat with while I ate. My order was tiramisu and a caffee latte (again). It was, of course, delicious and it was nice to have somebody to sit with.
After that I relaxed for several hours until meeting up with Sarah and Ariail for a quick trip to the grocery store. Ariail offered to cook dinner for us (Sarah and I have taken to calling her mom since she always feeds us). And she definitely delivered: French toast with homemade caramel sauce. It was absolutely delicious and I definitely had way more sugar than I should've that day. (Can't really bring myself to care though). After we ate we all played Uno for a while. I was really bad at it, but we all had fun.
I intend to work on my homework this weekend, but I think we all know that intentions and actualities can differ quite a bit.