Mimir:Spring 2014 Daniel Mamede Log


 * Home
 * Semesters
 * Spring 2014

Week Ending February 4th, 2014

 * Notes:


 * Comments:

Week Ending February 11, 2014

 * Notes:


 * Comments:

Week Ending February 18, 2014
Feb. 12 - We had our first official meeting of the graduate students. We discusses a few issues regarding the group dynamics (day/time to meet, availability during weekends, etc) and tools that will be used (create a GoogleGroup to facilitate emails communication, etc.)
 * Notes:


 * Comments:

Eric volunteered to take the lead and write the minutes. We discussed about how we will approach the project, mainly if we will create a chapter to go over each language or how we would structure the book. After some discussion, we decided that we will try to approach using one chapter to each paradigm and then we would use one programming language (or languages) that fits the paradigm to show examples.

We also agreed that we will need one or more Intro chapters. These chapters will be more general and go over the Programming in a more general concept, also briefly bring some history about the evolution of languages and why new languages/paradigms were born.

Week Ending February 25, 2014
The books that I order arrived: Concepts of Programming Languages (Robert Sebesta) and Seven Languages in Seven Weeks (Bruce Tate). I liked these books because they are not language specific (although the later tries to actually teach each language in a crash course style). But my expectations are to see if the author can make sense of the "why's" he uses seven different languages. Looking forward to see how he justifies the use of each language. Some of the languages I've never heard about: Ruby, Io, Prolog, Scala, Erlang, Clojure, and Haskell.
 * Notes:

The other book is more Conceptual and should be very valuable and helpful to this project. Found out it was one of the books Prof. Jonas used in his PhD, just a different edition.

The exchange of emails within the group has started and I see that the members are more engaged on the project. There has been collaboration as far as sharing links, books and also as how to focus on content versus style, deadlines, etc.
 * Comments:

The group did not meet on the 19th because all the members were working on the homework (Perl, BNF and Python). The homework was very time consuming but it gave me a chance to be exposed to Perl and Python for the first time. I used a book that helped me with Perl (Learning Perl, by Schartz, Foy and Phoenix), except for the Hash part of the homework. To understand how Python works I used two online resources: CodeAcademy.com and a great video tutorial on YouTube (A hands-on introduction to Python for beginning programmers,, by Jessica McKellar).

I think at this point, most of the grad students were trying to gain more knowledge (conceptual knowledge) rather than focusing on writing. I hope next week will be more productive and we will have something more concrete on paper.

[I agree. Thanks for great sharing--Erol --Ea2003 (talk) 11:10, 26 February 2014 (PST)]

Week Ending March 4, 2014
The groups made good progress on structuring the textbook. At least on theory the plan looks nice. I'm only concern with the timing of the plan. Maybe things will speed up once we start having something to work with. It's hard to start from nothing.
 * Notes:

I hope once at least the class notes are captured, we will have some material to edit and add to. And hopefully all members will contribute with each other.


 * Comments:

Week Ending March 18, 2014

 * Notes:

I really liked the notes entered by Jacob and Jason ([foss.unh.edu/projects/index.php/Mimir:Spring_2014_Lectures#Week_6_Language_concepts:_parameter_passing_by_value_.26_reference.3B_an_overview_Lisp]). There are a few comments I'd like to make and a few extra input, but other than that I'm pretty happy with their work.

The Lisp homework was very challenging. I wish we could spend more time on each language. I believe the most challenging aspect comes from the fact that this was the first time I was exposed to most of the languages we've covered in class. On the other hand (if we stayed the entire semester on one single language) I would not have an opportunity to at least be somehow familiar with all these different languages.

What I've seen so far is that the user can accomplish pretty much the same thing with any language chosen. What I mean is it would be possible to finish any project with any language. But the selection defines how efficient and effective the solution will be. Like the example Prof. Jonas used in class, anyone might do a plumbing job, but only a professional plumber will make sure the pipes will not become an obstacle in the kitchen.

Also, another thing that I'm learning is that there are several, SEVERAL way to define programming languages. One person might define a language based on its paradigm. Others might categorize them based on if they are interpreted vs. compiled and others categorized based on its generation (first, second and third generation). One author however, used a categorization that I've never seen before. Although he never explain why he created this categories, I believe it makes sense from the end user point of view. He categorized the languages into these three buckets:


 * Languages designed to manipulate the computer at a low level — that is, to manipulate the operating system (Windows or DOS) or even the hardware itself — are called low-level languages. An example is assembly language;


 * Languages designed to create standalone applications (high-level languages). Examples are BASIC, COBOL, FORTRAN, C, C++, and Visual Basic;


 * Languages that are designed to manipulate an application program, such as Microsoft Word or Excel, are application-level languages. One example is VBA, designed to manipulate MS Office applications (Word, Excel, PowerPoint, Outlook, Access, etc.)

It's very simple, but from the end-user perspective (or at least for a non-IT, non-CS person) this is what makes most sense in my opinion. The author, however, was very unfortunate on his example using only variants of VBA under this third category. I wonder what other languages might fall into this category. Maybe SQL and batch? Maybe VB, C# and even html can be hybrid and also fall into this category since they can open standalone applications and perform different types of actions.


 * Comments:

Week Ending March 25, 2014

 * Notes:

I'm still working on the LISP assignment. I decided to use lispbox (http://common-lisp.net/project/lispbox/), it looked more user friendly. Learning LISP is being a frustrating experience. I'm researching learning material and/or tutorials but nothing is very good. And since it's not a popular language, I didn't find any good material online. UNH catalog has two books on LISP, but both focus on different issues and were not very helpful.

There are though, some good materials online. They are just poorly structured, either they stop at the very beginners level and suddenly jump to specific and advanced problems (e.g. setting up a Server with Lisp) that has no relation to what we are learning in class.

All this frustration and the amount of time I'm spending researching and studying Lisp gave me very good ideas on how to structure the Lisp chapter on our textbook, which coincidentally is my responsibility.


 * Comments:

Week Ending April 1, 2014
We had a great meeting on 3/26. We first reviewed what was entered on the actual textbook so far, which wasn't much but it was helpful to give the other graduate students an idea of what should be entered.
 * Notes:

During the meeting we discussed how the chapters will be distributed among ourselves and we came up with the following structure:

Chapter 1: Intro – everybody will pitch in; Chapter 2: Overview of programming languages - Gabriel; Chapter 3: Imperative programming. Perl – Pavlos; Chapter 4: Functional programming. Lisp – Daniel; Chapter 5: Prolog (NOT COVERED) Chapter 6: Visual programming. Scratch – Eric; Chapter 7: Procedural programming. C – Erol; Chapter 8: Object Oriented programming. C++, Java – Erol; Chapter 9: Tokenization: a Lexical analyzer in Java – Eric; Chapter 10: Writing your own language: the Parser – Eric; Chapter 11: Grammars and Parsing – Casey and Eric (Parsing) and Erol (recursive); Chapter 12: Table driven versus recursive descent parsing – Daniel;; Chapter 13: Using lex and yacc – TBD;

Now that the structure and ownership is well defined, I believe we are able to start working on the book itself.


 * Comments:

Week Ending April 8, 2014
Focus on Scratch. Tried to fix some bugs, but in order to get it 100% and all the levels I originally proposed on my project proposal, it would take forever. But what makes me really satisfied with my game is that my three children are actually loving to play it. They even fight over whose turn is. If they like this game so much, maybe they will even improve their Math skills... And I will be more motivated to (one day) create the other difficulty levels.
 * Notes:

Also, still working on LISP. It's difficult to find material online (tutorials, books, training)


 * Comments:

Week Ending April 15, 2014
4/9 - the group met and reviewed the book structure. I liked today's meeting because it put all of us on the same page. Not all of the students were clear about who would be doing what. Now that about 2/3 or more of the course has passed, it is more clear how the book is going to be structured and who is going to be covering each chapter. Also, we discussed about the format of each chapter (Top item, quote, sub item 1, sub item 2...). That was very important because will make the book look consistent, every chapter will have the same "pattern."
 * Notes:

A couple of things concerns me:

1) how the text will "flow." What I mean is that each student has his own style. Even though we will be following the "format template" as explained above, each student might write very differently than the others (using "I" pronouns vs "we" vs. "the authors" or even using a passive voice;

2) Planing vs Execution. We discussed the structure, the template, the chapters that will be covered, the flow of the book and chapters, but the real content is not done yet. We need to focus on content. We need to have a first draft, even if the quality is not the best. It will be a work in progress, but we need to start from somewhere.


 * Comments:

Week Ending April 22, 2014

 * Notes:

This week the group focused on the poster. First the group exchanged some emails where templates, suggestions and contributions were made by most of the graduate students.

During our meeting after class, the group got together to finish and got the final version of the poster, which we were able to do. I'm impressed about how much faster and productive these meetings are than to exchanging documents via emails and trying to have our point of views across. In my opinion, if the group agreed to meet once a week during the weekend, we would have accomplished so much more. Nothing like face-to-face interaction...

Nevertheless, the poster came out great. Lots of changes were made and now the poster is rich and visually appealing. I'm curious to hear about the feedback about our poster. I'm happy with our final product.


 * Comments:

Week Ending April 29, 2014
4/23 - My group was suppose to take the notes for the lecture on 4/23. I don't know what happened, but one of them did not attend the class and the other undergraduate arrived a bit late. Because none of them were in class to start capturing the notes when the class started, prof. Jonas decided to switch us with the group that was going to capture next week's lecture. It was a little frustrating because I'm afraid a lot of deliverables will be due towards the end of the semester. Also, the lecture on 4/23 was very easy to follow (table driven parser), with clear steps. Other lectures were more "abstract" where the flow of the information is not as "linear."
 * Notes:

As I expected, the lex yacc lecture was much more difficult to follow. Very "lose" very "abstract" as I mentioned above. There was almost nothing written on the board compared to other lectures. It will be required some research in order to create a decent outline. Also, because of the final exam approaching, I know the undergrads are not going to touch the outline until after the exam.
 * Comments:

Talking about the lecture we captured, there are still some improvements that need to be done. We distributed the items that prof. Jonas pointed as items that have work to be done. Jason and Jacob will work on that right after the exam and I will review it as soon as possible so we can let him know (prof. Jonas) and then receive more feedback.

Week Ending May 6, 2014

 * Notes:

In order to prepare for the exam, I studied with Erol Friday, Saturday and Sunday. We spend most of the time reading and discussing the material on the Lectures section (Spring 2014 Lectures: [])

There were a few sections where we found out incorrect entries. We are going to either email or contact Prof. Jonas to confirm if our understanding is correct and, if necessary, make the necessary corrections and let the other students know.

We also reviewed the home-works and other exercises we covered in class, such as Perl, BNF, LISP, and Table Driven Parser.


 * Comments:

After the Exam

 * Notes:

The exam was brutal! It was definitely the most challenging exam of the entire MS-IT program. I wasn't expecting to write a Java parser by hand during the exam. The other questions were expected. But it's very difficult to provide the answers comprehensively and concisely as I know are Prof. Jonas' expectations.

I'm still struggling with homework 4 and the final project. During the weekend I also worked on Mimir (textbook). I decided to prioritize Mimir over the homeworks since this is a group project and I would not want to negatively impact the grade of the group. A lot of emails were exchanged back and forth after the exam and I think the group put a good effort on the Mimir project.