Computer Professionals Program Newsletter
Master of Science in Computer Science

Maharishi University of Management, USA

Maharishi University of Management
Fairfield, Iowa
52557 USA
(641) 472-1153

March 2015

Software and Life Lessons Learned

In October 2013, Ali Alrahahleh traveled from Amman, Jordan where he worked as a Software Engineer for Yahoo! to enroll in our Computer Professionals Masters program. Not long after arriving at MUM, Ali met fellow classmate Nazanin Delam, a software engineer from Iran, and they soon fell in love. Nine months later, having earned a 4.0 GPA, Ali was hired to do his curricular practical training internship at Walmart Labs, Co. in Sunnyvale, California as a Senior Software Engineer. Nazanin found an internship nearby, as a Software Engineer at Upland Software, Inc. Within a few months, Ali and Nazanin were married, and they have been enjoying their new life together amidst the wonderful attractions of the Bay area.

When our students work at their internship positions, they get academic practicum credit while also completing four additional graduate Computer Science courses via distance education. This allows them to maintain full-time student status under their F-1 visas.

Requirements During Internships

Each semester, intern students are required to send written reports describing their work progress back to their faculty advisor at MUM. They relate how the knowledge previously gained in on-campus courses has benefited them in their assignments in their company. Because of the exceptional performance Ali has demonstrated in his work, and his impressive description of how significantly his MUM courses have helped him, we have chosen to show part of his report below.

Here is a summary of the projects Ali has worked on, and their relation to his previous MUM courses:

  1. Big Data: The most significant impact on my career improvement came from the Big Data course. Big data, especially Hadoop, is used by a lot of enterprise companies in Silicon Valley. One of these companies is my current employer. With the knowledge that I gained from this course I managed to write map-reduce solutions for most of the problems, which are not solvable by a normal approach. Because of the data size, simply implementing map-reduce jobs can solve issues and scalability that is a non-functional requirement. One of the tasks my manager asked me to do was to find the correlation between message size and application name in one month's amount of data, which was ten terabytes. I solved that task in one day, and gave him the result, which was used as a parameter for test simulation which I previously developed.
  2. Advanced C++: I am not using C++ at work, but it is helping me understanding lots of modules written for the NodeJS _JavaScript interpreter, including how it works, its interfaces provided, and its underlying implementation. As you know, most of open source software does not have proper documentation or an active mailing list.
  3. Software Testing: The testing seminar gave me great knowledge in testing systems and various ways of testing, such as smoke tests, unit tests, black boxing, etc. One of the tasks that I am working on right now as a team player is testing the logging client. This is really important for the end user. Testing experience that I gained in the MUM course helped me in testing the edge scenarios, and knowing how to do performance tests for such a critical application. As a result, I came up with numbers which helped the developer to decide the best approach to improve performance and decrease overhead. My manager was really happy, and he really appreciated my initiative in a field in which I have no working experience.
  4. Parallel Programming: Parallel Programming was one of the most interesting courses I had at MUM. I understood its concepts deeply, and fortunately I could also apply some multithreading at work. I used multithreading for logging algorithms. The result was astonishingly fast response to multiple, simultaneous logging queries, and brought my manager's satisfaction for the logging feature. It also helped me in debugging multithreaded applications, which introduce hard, complicated, non-reproducible bugs. One of the issues took my colleagues two weeks without any results, and it was impacting production application. With the knowledge of parallel programming, I managed to solve it in one day, and provide fixed batches to the mainstream code.

Ali and Nazanin on their wedding day

  1. Modern Programming Practice: MPP was full of core Java deep knowledge. It helped me a lot through the job interviews and my work. I used Polymorphism, Collections (Maps, Trees, lists, etc.), and Inheritance concepts throughout my daily work. Having a good understanding of core Java concepts and knowing how to use the Eclipse debugger, which I learned in MPP, helped me a lot at debugging tasks. Furthermore, I gained valuable experience working with the platform using Apache Tomcat in the MPP course. Also UML was a great help for me as a tool to illustrate solutions and write wiki pages, which described the proposed solution for different kinds of problems, such as testing simulation of static and dynamic parts, and catching design fellows before implementation.
  2. Networks: This course was so useful for my whole Software Engineering career from the job interviews to my daily coding. It provided me with tools helping tracing issues, optimizing performance, and understanding how the underlying implementation works. I used TCP/IP, which was illustrated in the course and "point of truth" for any decision that I made in terms of network optimizing, sizing and latency reduction. Also the UDP topic was really useful, since I used it to optimize one of the systems we already have. This decreased the overhead of the application layer and increased the throughput.
  3. Transcendental Meditation: Aside from the technical courses, I have learned a simple mental technique at MUM, which I really have appreciated since coming to San Francisco. When my real life started, and my responsibilities accumulated, I really needed to have some moments of quietness in my daily routine. Within all the chaos of the city, and my fast-pace life, my twenty minute meditations were awesome moments of peace, life and quietness. I could rejuvenate myself and my mind twice daily, and that twenty minutes gave me much energy to continue my routine, doing sports and working. It made me so creative and made my thinking vast. I think the Transcendental Meditation® technique was the best thing I ever learned in my life, and now I see its effects much more.

According to Ali, "Stress is a major player in software programming; deadlines make people unstable, angry and desperate to finish on time. With the help of TM, I tend to be more focused and calm most of the time, and a high performer. People in my company asked me about the secret, so I pointed them to articles about TM."

back to top

Site Map