Posts Tagged ‘Software tools’

What is the purpose of a lab?

In Education, Embedded Systems on July 22, 2014 at 9:22 PM

Laboratory sessions at universities form an integral part of curriculum. This is specially the case with science and engineering disciplines. While different disciplines have different requirements regarding what will actually be done in these sessions, a basic question to ask is – what is their purpose? I will discuss with respect to labs for computer engineering curriculum. These lab sessions are meant to give hands on experience to students in working with devices like micro-controllers, microprocessors, field programmable gate arrays (FPGA) etc. Often times, students are given codes (programs in a programming language) written by a teaching assistant (TA) which they are expected to use to program the device. They are expected to program the device using some Integrated Development Environment (IDE). The students may be required to modify these programs based on the lab exercises.

Among other things to learn, I have realized that there is too much emphasis on learning how to use the IDEs. This is not peculiar to one country or university. It seems to be the norm at many places if you look at the lab descriptions available online. It is true that different IDEs look dissimilar (obviously!) and the options that they provide to a user can be in different parts of the graphical user interface (GUI) and under different menus. However, they all follow a basic flow which is essential and relevant to the system or device that they target. Good IDEs are similar in layout and are easy to navigate. Therefore, it should be easier for students to move from one IDE to another after they have learned at least one properly. Besides, it is not so much the IDEs themselves but the different steps in the flow which are more essential to learn. After all, IDEs package different steps, necessary to program such systems and devices, into one nice coherent click-and-run flow.

I believe that lab sessions are meant to complement lecture based learning. How the different steps , algorithms, methods etc. taught in a class come together in a coherent manner in order to enable the programming of such systems, is an important learning outcome. Besides, when working with development boards and evaluation kits, students can learn to navigate through user guides, reference designs, schematics, bill of materials (BOM) files etc. These will seldom be taught in class room, but they form a very important part of an engineer’s life in industry. Lab sessions provide an opportunity for students to relate and expand their class room based learning to what actually goes into designing, building and testing real world systems. I think that should be one of the most important guiding factor for faculty members when designing lab sessions.

Do you read User Guides?

In Design Methodologies, Education, Embedded Systems, Engineering Principles, Research and Development on May 14, 2014 at 6:32 PM

I am a member of LinkedIn and like many of you am also a member of quite a few LinkedIn groups. The good thing about LinkedIn groups is that the discussions remain professional in tone and content. This is why I like them compared to discussions on other social media platforms where they can vary in tone and content from the most professional to the most ridiculous. In a discussion on such a LinkedIn forum meant for engineers, someone admitted that very few engineers or users of tech tools read the user guides. This is not far from reality. I have seen this when I interacted with practicing engineers on a more regular basis than now. I also see it in academic life.

Personally, I find user guides of development boards, software and hardware tools extremely useful. Reading them once gives me enough confidence in extracting the best out of these tools. For instance, user guides of FPGA vendor providers are very helpful and I am more confident about my design after having referred to the user guide at least once though often these guides can be voluminous. I guess the verbosity of these guides is one main reason why people don’t feel like reading them. The other reason, I think, is the propensity of many practicing engineers, graduate students and others to get  their hands dirty as soon as possible. They want to write code, design a circuit, run simulations etc. without getting bored reading these guides. While this enthusiasm to start working is worth appreciation, ignoring the “reading” part leads to problems later on in the product development process, research methods and has the potential to creep into the results. Basically, this haste leaves one vulnerable to questioning at a later stage. Sometimes this can prove very costly as well especially if it is related to product development. Of course one can always talk about pressure for results from managers, supervisors, customers etc.; this is not a very good excuse. Good managers etc. also understand the importance of being abreast with background information.

Is this issue observed more in the engineering industry than say banking or insurance sectors or for that matter safety critical engineering domains? Perhaps. Engineers take great pride in fixing things. They can use patches for software, make new releases, change components or simply replace the product.  However, bankers and insurers cannot do much once money is gone. The fear of losing money is too great to sustain the dislike for reading guides, whitepapers etc. Similarly those involved with safety critical engineering domains are more mindful about liability issues that aversion to poring over thick user guides is probably a non-issue.

One can also argue that  the presentation style of many user guides is quite boring. I agree when you compare with things that provide “instant thrill” thus leading to a desire to know more. User guides do not provide that thrill but writing code, experimenting with a development board etc. does give a lot of thrill to many engineers. Nevertheless, when it comes to getting a job done properly, there is no other choice but to sweat it out! 🙂

Automation & Your Skills

In Design Methodologies, Education on August 12, 2013 at 12:24 AM

During my undergraduate studies, when I first went to a workshop of carpentry, sheet-metal etc. where they teach you how to work with wood and metal and how to make different shapes and objects with them, I did not understand why an Electronics & Communication engineering major was supposed to learn those things. I am sure that there are many who will question that way and this debate will probably never end.  Probably, the best learning outcome of such an exercise is the improvement in our abilities to focus, concentrate, be precise and measure accurately. Also, it helps develop a sense for working with limited resources. After all the quantity of wood or metal that each student is given can be limited and one has to ensure that one gets the work done with that limited quantity. Perhaps such learning exercises should be promoted by also focusing on these learning outcomes.

In today’s world of complex manufacturing, computer aided design tools and computer aided manufacturing have taken over such manual tasks. Once can define and draw any shape using sophisticated design tools and have it carved out by a computer aided manufacturing machine. While these computer aided tools came into existence to deal with complex shapes as well as with the increasing scale of manufacturing, they do not let you have the experience of working with your own hands. So it is quite possible that someone adept at using these computer tools, will fail to bend a sheet of metal at a perfect 90 degrees. So what can be a not so promising consequence of this? Excessive reliance on automation even for simple tasks may lead to a loss of such basic skills. At the same time you run the risk of being unproductive when such computer tools shut down for some reason even if the work does not really require them. Automation is intended to reduce time and manage complexity and scale of operations. It is not supposed to replace acquiring skills by hand where possible.

Another example would be tools like Maple and Mathematica. These are extremely powerful tools to solve mathematical problems. Would you stop learning how to solve a differential equation or how to calculate the area of a triangle by pen and paper method because these tools can do it for you? I guess your answer would be “no” because if your answer is “yes”, you risk a future where people would have forgotten all such knowledge and lost such skills which would instead be built into computer/software systems. A breakdown of such systems would leave you with no option to get back on track!

P.S. The idea for this post came after reading Are We Losing the Secrets of the Masters? This article also mentions about old books which described in detail design of magnets and electromagnets, making neon signs, silver printing, building a forge, blacksmithing etc. Some of these books can now be found here, here and here.  A PDF version of a 1896 book titled “Five Hundred and Seven Mechanical Movements” digitized by Google can be found here and associated websites on animation of engines are this and this.

Complementary to Google Search

In Education, Interdisciplinary Science, Research and Development on March 26, 2013 at 5:31 PM

When we look for information, almost all  of us invariably turn to Google. There is no doubt that Google and its services, especially its search engine, have helped many of us who look for both new and old pieces of information often. However, is it always the best in terms of returning results that are relevant to the search query? Not necessarily. By relevant, I mean the intention of the user who typed in the search query.  Given the fact that the Google page rank algorithm, among other things, assesses the importance of a page/resource based on the number of pages/resources linking to it and their importance as well, the search result tends to tilt in favor of  those resource which most people are talking about. Therefore the search result can include Wikipedia references, journal and magazine articles, Youtube videos etc. This means that there may not be a uniformly decreasing order of depth of information available in the search results. It may also mean that the quality and expanse of information available in the search results could vary widely. For instance, a news report that shows up higher on the list of search results could be discussing the outbreak of a particular disease and its economic and social impacts. It may not be discussing the medical science behind the disease itself. Of course one can try combinations of phrases as well as Google custom search to narrow down the results. This also means that if you are searching for something that is discussed rarely, you will have to sift through a lot of results. However, there is another way of looking for targeted information: use of field specific search engines. For example,  FindZebra  is a search engine for rare/orphan diseases. This is currently a research project at Technical University of Denmark  and it seeks to help doctors looking for information on such diseases for the purpose of medical diagnosis (an example of very targeted information). It indexes only the most relevant databases for this purpose.  Its comparison with Google search and Google custom search can be found here. Archives, like this one,  in different fields also serve the same purpose. It  will be better to see the two search approaches as complimentary to each other. While field specific search engines/archives can be very precise, Google search can provide a wider set of results where different perspectives and analyses may emanate on the same subject but from  people with different backgrounds.

Software, Patents, Innovation, Ideas: A Curious Mix

In Education, Intellectual Property, Interdisciplinary Science on October 8, 2012 at 6:13 PM

Filing a patent is a big thing these days, especially in the academia. It has been there for quite a long time in the industry though. Earlier, it would suffice to publish in top quality journals or conferences, but now patents are the real icing on the cake. Filing a patent is a costly process and it is far more costlier to prosecute it till its allowed lifetime after it has been granted. One needs not only really deep pockets to engage in patent litigation but also an elaborate infrastructure to find out instances of patent infringement.

While a lot of the patents in earlier days would describe an invention/innovation in terms of its parts that make it work with detailed diagrams of parts etc., a lot of patents these days are filed based just on ideas. It is ideas which are getting patented and this is something that many people are concerned about, especially in the software industry. History shows us that similar ideas have been developed by different people independent of each other at different times and it is no different in modern times. Do we really have to patent ideas? Are they patentable? Don’t they stifle flights of fancy and imagination which have helped people in coming up with brilliant inventions and technologies? Where is the tradeoff between protecting intellectual property and protecting flights of imagination? I think that protecting both of these are important.  However, the dimension of “time” that patents add to an idea/invention can have an impact as one man’s flight of imagination at time “x” prohibits another man’s flight, even if independent, at  time “y” where x > y. It is a curious mix and definitely an important issue to be discussed and debated. You might be interested in reading ” The Patent, Used as a Sword” published by the International Herald Tribune.

Error Documentation: Why not?

In Design Methodologies, Embedded Systems on August 27, 2012 at 12:48 PM

I am sure that many of you who have used any software tool that throws up errors have spent time (at one point or another) figuring out what those errors mean. Every software tool that is used in any electronics or software design project throws up errors. Be it is GCC, EDA tools etc. One might have used the support channel of the vendor, user forums, websites like stackoverflow etc. to understand the meaning of those errors. A number of times, these errors do not make any immediate sense to the user. There are also many errors which can be because of multiple reasons. Once one gets a list of these reasons, one has to choose the one that is most likely to be applicable to the case at hand. All this reduces productivity. The time spent searching, gathering and analyzing information could have been better utilized focusing on design. Would it not be better if tool vendors also released documentation on the different kinds of errors that their tools might throw up and the associated reasons? I believe that this “ready-reference” would be very beneficial. After all during the development of those tools, the vendors are indeed aware of why a particular error has been thrown up. Why not just compile all that information in one place and help the user? Also, the errors are not always due to problems in the design source files. Sometimes they are there because the tool expects the user to structure the project, tool inputs etc. in a certain way. Given the complexity of modern EDA and other development tools and the time spent in learning them for effective use, it would only be welcomed if vendors offered this extra level of documentation.