Category Archives: ECE 2524: Intro to Unix

Goodbye!

Hello everybody!

The semester’s come to an end and I’m making my final blog post for this class. It’s been a fantastic experience and I wanted to extend a sincere thanks to Professor Darren Maczka for making this class a great learning environment and a lot of fun.

Having completed this class, I can say with assurance that I’m much more comfortable with UNIX/LINUX based operating systems than I’ve ever been before. I have a better understanding of the basic design principles and their applications. In addition, I also think I’m better prepared for a sofware-based job/internship position having gained some experience with Python. Most importantly though, I feel a lot more confident going into what is arguably the most challenging software class of my undergraduate career – Applied Software Engineering. A huge thank you to everyone who has been a part of this journey of learning, I truly feel more confident coming out of this class.

It’s been real. Goodbye and I’m grateful to everyone who took out time to read through these posts. It truly has been a pleasure.

Good luck!

Leave a Comment

Filed under ECE 2524: Intro to Unix

Future Suggestions

Hello everybody!

It’s hard to believe the semester is almost over. It’s gone by fast and I’ve definitely learnt a lot. I have a feeling that this class is going to turn out to be one of the most useful classes that I’ll end up taking at Virginia Tech, not because of the technical difficulty but because of the increasing popularity of UNIX/LINUX based systems in the workforce, especially in the software engineering industry. I do, however, have a few suggestions that I think will really make the class even better.

  1. The final project was a great way to bring together what we’ve learnt during the course of the semester to implement a working tool. It was difficult but also provided the freedom to challenge yourself as much as you want and push your skills. In my opinion, taking the midterm out of the curriculum and replacing it with a mid-semester Python project would be more useful as it would allow students to tie together the different concepts they’ve learnt throughout the semester.
  2. While the VTLUUG meetings were informative, I found myself lacking interest a lot of times just because the level of understanding of the current members of VTLUUG is much higher than anyone taking the Intro to Unix class. In my opinion, it would be beneficial if the students taking the class would set up a similar club which would evoke participation and leadership within the club would constantly keep changing every semester since a different group of students would take the class every semester.
  3. While most of the homework assignments were really helpful in solidifying my concepts of the material, the one I liked the most was creating an assignment because we had the freedom to interpret it the way we wanted and make it as challenging as we desired. A few additional assignments of this sort would really help push the class towards a greater level of innovation.

These are some of the suggestions that I honestly think would help better the class and make it even more successful than what it is right now.

Until next time!

Leave a Comment

Filed under ECE 2524: Intro to Unix

Text Editors?

Hello everybody!

I wanted to make sure that at least one of my blog posts focuses on the ongoing discussion in the UNIX/LINUX world about the best text editor. Given the popularity of third-part editors, some of the prominent text editors in my opinion are VIM, EMACS and GEDIT. Personally, I’ve only worked with VIM and GEDIT and I’ve really enjoyed VIM.

In all honestly, I don’t know how much difference using one text editor over another has made since all of them primarily do the same thing and provide the same feature but some have a much easier and user-friendly UI than others. During my internship at Qualcomm, I primarily worked with VIM and it was a good experience – VIM primarily allows every action to be completed through keyboard shortcuts, rendering the mouse basically useless. While this may be frustrating at first, it definitely becomes second nature after a couple of weeks of thorough usage and editing actually takes place a lot faster as compared to constantly switching between keyboard shortcuts and mouse clicks. It also has multiple modes such as edit mode and insert mode which allows for a greater level of flexibilty.

The other text editor I’ve had some experience with is GEDIT which I used for this course over the semester. GEDIT has a very simple user interface which makes it a good text editor for beginners but does not seem to have some of the more advanced features that other text editors may provide. I used GEDIT for the entirety of the semester because I didn’t need to make any special modifications to text and GEDIT seemed like the simple and convenient choice. I’ve personally never had any experience with EMACS.

Until next time!

Leave a Comment

Filed under ECE 2524: Intro to Unix

Creating An Assignment

Hello everybody!

We had our final homework assignment due today which was probably the most fun and involved assignment we had so far. I really enjoyed some of the technical homework assignments we’ve had this semester, especially the ones that involved Python scripting but the open to interpretation nature of this particular assignment made it challenging and fun at the same time. We were asked to design any sort of assignment that may be used for the class next semester. I decided to create an assignment that would give the user a good understanding of pipes and filters which forms the basis of more complex scripting skills.

One of the best aspects of this assignment was the level of freedom we had to implement the assignment. We could make the assignment as complex or simple as we liked, as technically challenging as we liked and providing the solution was optional. While my assignment is posted to GitHub, the essence was familiarizing the user with reading in lines of data, manipulating it in a certain way and then outputting the lines of data to the standard display after modification. In doing these manipulations and modifications, the user was in fact creating somewhat of a mini-language that could be used to write a short action file.

I really enjoyed doing this assignment and I would encourage the classes that follow to have a few more homework assignments that allow for this sort of freedom, especially since I believe students work hardest when they have the freedom to choose what they want to work on.  Overall, a great assignment and I would recommend putting in a couple of more similar assignments in the curriculum of the semesters to follow.

Until next time!

Leave a Comment

Filed under ECE 2524: Intro to Unix

Second VTLUUG Meeting

Hey everybody!

I recently attended my second VTLUUG meeting. This meeting was actually very interesting and relevant to what we’ve been doing in class as we talked about the different LINUX distributions that have been released such as Fedora, Arch Linux  and Linux Mint and the advantages and disadvantages of some of these distributions over others. After using Ubuntu for one semester, I feel I’m fairly comfortable with the UI and might consider the possibility of migrating to a more developer/programmer friendly LINUX distribution such as Arch Linux which is targeted for more experienced LINUX users as I think it might possibly prove to be useful for the Applied Software Design class I’m scheduled to take next semester.

Going back to the topic of the VT LUUG meeting, this meeting was very participative with multiple people from the audience providing their input on the various distributions unlike the last meeting where the President and Vice-President seemed to be doing all the talking. After talking about the various LINUX distributions, we essentially talked about upcoming and noteworthy news in the UNIX/LINUX world. Another repeating observation that I made at this meeting was that a lot of the material that was discussed in the meeting was beyond the scope of our ECE 2524: Intro to Unix class and it might be better if VTLUUG was divided up into smaller groups based on the proficiency of the users and their past experience. In conclusion, the VTLUUG meetings were very informative and thorough with upcoming news and events in the LINUX/UNIX world but almost every member has a vast amount of experience and seems proficient with the environment so it is difficult to follow along sometimes.

Until next time!

Leave a Comment

Filed under ECE 2524: Intro to Unix

First VTLUUG Meeting

Hello everybody!

I just attended my first VTLUUG meeting and it was nothing like what I expected. From their website, the Linux and Unix Users Group at Virginia Tech (VTLUUG or “the LUUG”) is dedicated to improving the computing skills of its members, supporting Linux and Unix use on campus, and serving the community through Free Software and open data. The first meeting was especially interesting because I felt a lot of the members were regulars and very experience with UNIX/LINUX based operating systems.

At this meeting, we talked about a simulation game that was developed in a UNIX environment similar to one of the primitive handheld console games. To be quite honest, I really felt that almost everyone in the audience who was participating in the discussion of the game was very experienced with UNIX and I couldn’t follow along in some of the subtopics of the discussion. The people who were speaking about the game did go into a fair amount of technical detail but there was an atmosphere of mutual respect and inquisitiveness all around.

One of the trends I seemed to notice at the meeting was that the same key people kept presenting new ideas and talking about developments in the world on UNIX/LINUX. A suggestion that I would encourage to be implemented is encouraged participation of some of the newer members of the organization, especially students who attend the meetings to get credit for the Intro to Unix class. This would encourage an increased level of learning and curiosity which I think would be very beneficial. It was a great experience from an overall perspective though.

Until next time!

Leave a Comment

Filed under ECE 2524: Intro to Unix

Python Scripting

Hello everybody!

We were introduced to Python this week. If I had to recommend a programming language that all programmers should know in addition to a high level language such as C++/Java, it would be either Python or Perl because of the importance of scripting in the programming world today. I worked for Cadence Design Systems two summers ago and I actually gained some experience working with TCL which is a primitive scripting language so I think it’s comparatively easier for me to understand the advantages of a much more advanced and higher-level scripting language.

During my internship at Qualcomm this past summer, I encountered a problem that would have been easily resolved with a scripting language such as Python. Without getting into too much technical detail, I was working on a lot of low-level C and assembly files for the major portion of my internship. With regard to the assembly files, I was working on an ISA that specifically provided details on each assembly instruction of a particular processor and I was adding additional information to the assembly file instruction by instruction looking at specific bits of each instruction. Python would have been a great tool to use in retrospect because I could have automated the process to a large extent.

I’m definitely looking forward to learning more about Python and becoming somewhat proficient at the end of the class.

Until next time!

Leave a Comment

Filed under ECE 2524: Intro to Unix

Version Control

Hello everybody!

One of the most interesting and useful aspects of an UNIX based operating system such as Ubuntu so far has been the version control feature. In Windows, unless you are using a third party application that automatically updates an online copy of a file when you make changes to the local copy, you have to manually update the online version everytime which can be very tedious and a huge hassle. Unix-based operating systems solve this problem by using online repositories to store your work as you make changes to your file directly from the terminal by using version controls such as GIT and BAZAAR.

I was first introduced to version control during my internship this past summer at Qualcomm. I was working with a lot of assembly files that had to be constantly changed and updated and I used GNU’s BAZAAR as version control. I could simply type up:

bzr update

and all my changes would be saved instead of manually uploading the updated file and replacing the older file with it. For this class, we are going to be using GIT. I just set up a repository for this class at Github.com and I’m looking forward to using a  different version control from the one I’ve previously used. GIT seems pretty simple and user friendly so far but it’s too early to make a conclusive decision at this point.

Until next time!

Leave a Comment

Filed under ECE 2524: Intro to Unix

Using Ubuntu

Hello everybody!

We learnt in class today that we would be using Ubuntu for the rest of the semester. I’m actually pretty excited to be honest. Ever since I can remember, I’ve personally used Windows. I’m proficient in Windows but I can’t imagine using any other operating system which is why I think this will be a great learning experience.

There are still a few issues that I’m trying  to find more information about before I finally go through and install Ubuntu. The basic question that I’m trying to resolve right now is where I should partition my hard drive and make a separate drive for Ubuntu or just install VirtualBox and try to run Ubuntu within Windows. While the partition install might be more stable and recommended, I want to be able to switch back between Windows and Ubuntu almost instantaneously as I do most of my work on Windows.

Weighing out the pros and cons though, I think I’m going to go with a partition install. I would rather have a stable operating system even if it means a longer boot time and switch time to Windows. I finally installed Ubuntu and I’m actually impressed. It’s a lot smaller, faster and user friendly.  One of the features that has stood out immediately is the increased functionality of the keyboard. I really like the fact that Ubuntu integrates some of traditional features of Windows such as dragging a window on either side of the screen to split-screen it along with the more primitive Unix operating systems which are primarily dependant on terminal commands. I’m hoping to become a lot more familiar with the environment by the end of the semester.

Until next time!

Leave a Comment

Filed under ECE 2524: Intro to Unix

Introduction to Unix

Hello everybody!

It’s the beginning of the fall 2012 semester and I’m actually pretty excited about this class. When I started here at Virginia Tech two years ago, I had no idea what Unix or Linux was or that other operating systems apart from Windows and Mac OSX existed.  During my time here at Virginia Tech, however, I’ve heard a lot of good things about Unix and its advantages from a programmer’s perspective so I’m really looking forward to learning more about this class and understanding the true essence of Unix/Linux and its utility.

I was able to get some experience working with Unix over this past summer while I interned with Qualcomm. My internship was primarily a computer architecture based internship but all the necessary programming had to be done in an Unix environment. After the learning curve, I became pretty familiar with the basic commands such as grep,  ls and cd. One of the biggest things I learnt about the Unix operating systems during my internship at Qualcomm, however, was version control. We used BZR but I’ll talk more about that in a later blog post. I’m excited for the journey ahead.

Until next time!

Leave a Comment

Filed under ECE 2524: Intro to Unix