Friday, January 15, 2016

Amazing Grace



Grace Brewster Murray Hopper (December 9, 1906 – January 1, 1992) was one of the greatest female computer scientists in 20th century. She invented the first compiler for a computer programming language, and was one of those who popularized the idea of machine-independent programming languages which led to the development of COBOL, one of the first high-level programming languages. She is credited with popularizing the term "debugging".

Curious girl and female mathematic professor

Hopper was born in New York City. She was curious as a child, a lifelong trait: at the age of seven she decided to determine how an alarm clock worked, and dismantled seven alarm clocks before her mother realized what she was doing (she was then limited to one clock).

She graduated from Vassar in 1928 with a bachelor's degree in mathematics and physics and earned her master's degree at Yale University in 1930. Hopper began teaching mathematics at Vassar in 1931, and was promoted to associate professor in 1941.

In 1934, she earned a Ph.D. in mathematics as the first female who achieved the degree from Yale.


Glorious military career from WWII

In 1943, Hopper volunteered to serve in the WAVES. She gave up the current life and graduated first in her class at the Naval Reserve Midshipmen's School at Smith College in Northampton, Massachusetts.

She served on the Mark I computer programming staff headed by Howard H. Aiken. Hopper remained at the Harvard Computation Lab until 1949, turning down a full professorship at Vassar in favor of working as a research fellow under a Navy contract at Harvard.

First compiler

In 1949, Hopper became an employee of the Eckert–Mauchly Computer Corporation as a senior mathematician and joined the team developing the UNIVAC I.

In 1952 she had an operational compiler. "Nobody believed that," she said. "I had a running compiler and nobody would touch it. They told me computers could only do arithmetic."

COBOL

In the spring of 1959, a new language COBOL (an acronym for Common Business-Oriented Language) was defined at the Conference on Data Systems Languages (CODASYL). brought together computer experts from industry and government. Hopper served as a technical consultant to the committee along with other computer experts from industry and government. The new language extended Hopper's FLOW-MATIC language with some ideas from the IBM equivalent, COMTRAN. Hopper's belief that programs should be written in a language that was close to English was captured and COBOL went on to be the most ubiquitous business language to date.

Retire and rehire

After Republican Representative Philip Crane saw her on a March 1983 segment of 60 Minutes, he championed H.J.Res. 341, a joint resolution originating in the House of Representatives, which led to her promotion to Commodore (Admiral, O-7) by special Presidential appointment. She remained on active duty for several years beyond mandatory retirement by special approval of Congress. In 1985, the rank of Commodore was renamed Rear Admiral (Lower Half). She retired (involuntarily) from the Navy on August 14, 1986. At a celebration held in Boston on the USS Constitution to celebrate her retirement, Hopper was awarded the Defense Distinguished Service Medal, the highest non-combat decoration awarded by the Department of Defense.

She was then hired as a senior consultant to Digital Equipment Corporation, a position she retained until her death in 1992, aged 85.

Ambassador of computer science

Her primary activity in this capacity was as a goodwill ambassador, lecturing widely on the early days of computers. So during many of her lectures, she illustrated a nanosecond using salvaged obsolete Bell System 25 pair telephone cable, cut it to 11.8 inch (30 cm) lengths, the distance that light travels in one nanosecond, and handed out the individual wires to her listeners. Although no longer a serving officer, she always wore her Navy full dress uniform to these lectures, which is allowed by US Navy uniform regulations.

The most important thing I've accomplished, other than building the compiler, is training young people. They come to me, you know, and say, 'Do you think we can do this?' I say, "Try it." And I back them up. They need that. I keep track of them as they get older and I stir them up at intervals so they don't forget to take chances.

Owing to her accomplishments and her naval rank, she is sometimes referred to as "Amazing Grace". The U.S. Navy Arleigh Burke class guided-missile destroyer USS Hopper (DDG-70) is named for her, as is the Cray XE6 "Hopper" supercomputer at NERSC.

Grace Hopper and encouragement of women

The Grace Hopper Celebration of Women in Computing is the world's largest gathering of women technologists. It is produced by the Anita Borg Institute and presented in partnership with ACM.

More information could be found here:
http://ghc.anitaborg.org

Wednesday, January 13, 2016

About the Author

Hello~ It's me!    - Janice :D
Hellooo everyone, this is my very first post in this blog. Let me do a little introduction about myself. My name is Janice, and I am studying Bachelor of Software Engineering at Taylor's University, Malaysia. I am currently Year 2 Semester 3 student and I have one more year to go in my degree before it ends.

In this semester, I am having my internship at Hilti Asia IT Services Sdh. Bhd Company (HAITS). Hilti is an international constructor company that offers products, systems and services with used of current leading-edge technology and provide professional customers in the construction and energy sectors with innovative solutions that feature outstanding added value. What am I doing here is that I have a research topic that has been given during my first day of internship and I am assigned to handle a project individually which is a mobile app in Android platform. (PS: I am writing this post during my office hour :p) The office here is not consider big but I just simply love the company culture here. Today, is my second week interns here and I could feel that everyone in the office is very friendly.
 
Besides working, in my university, my friends and I (most of them are studying in IT field) have a Tech club called Agents of Tech. It is a technology club that gather all the technology passionate students in Taylor's Univeristy and explore all the latest technology together. Last year October, the club has organised a 24-HOURS Student Hackathon in our school. A hackathon is a platform to gather different field of students who are expert in a specific area and team them up by 4 persons in a group. ImagineHack 2015 was very challenging because every student joining the competition did not give up in their ideas. Every year, Agents of Tech club will organise ImagineHack for students to unleash their ideas and expertise. For more information, can visit to: https://www.facebook.com/ImagineHack/


This is the group photo of all the Imaginehack 2015 committees and participants.
"T" for Technology
"T" for Taylor's University Agents of Tech
^.^

About girls in Computer Science, I think it sounds cool right xD (Because in my country, not much girls study in Computer or IT related field. Hehehhehe)

Tuesday, January 12, 2016

Emerging Research on Automated Program Repair

While most research previously focuses on debugging and fault localization, there has been growing interest in the area of automated program repair.

I will give a brief introduction to automated program repair by answering several common questions that I came across.

Q: What is "Automated Program Repair" or "Automated Patch Generation"?
A: Imagine you are a developer who are assigned to fix a bug in your software. You are given a failing test which shows how to reproduces the bug. The goal is to fix this bug such that this failing test become passing while making sure that all other tests still pass. Firstly, you will need to find the location in which the bug are being manifested, essentially answering the "where to fix?" question.
After that, you will need to think about how to modify the code in order to complete the fix. You will also need to check if the code changes introduced indeed fix the bug by re-running all the tests. You could imagine that such process is both tedious and error prone. Wouldn't it be great if a tool could automatically do all these mentioned tasks for you? These are essentially the promises of automated program repair.

More formally, automated program repair is an approach that automatically generate fix for a buggy program by performing both fault localization and patches generation.

Q: How does it work? It sounds magical to me that a program could fix itself?
A: The idea of having a program fixing its own bugs may sound too good to be true but this is not the case. Most automated program repair techniques share lots of similarities with previous research on debugging and fault localizations. This is because if an automated technique could tell you the exact line and even the name of relevant variable in that line that cause the bug, then it is relatively easy for you to fix the bug itself. 


Q: Is it completely automated?
A: This depends on the techniques itself. From my experience of using a few state-of-the-art automated program repair tools, it is not as simple as clicking a button.
The general requirement is:
  • The bugs itself must be reproducible and deterministic
  • Test scripts need to be modularized such that each test could be run separately.
  • Each test execution should take less than a few minutes
  • The compilation of the program should take less than one hour

The last two requirement is important especially for search-based program repair techniques because these techniques spent the majority of the repair process in test execution and compilation.


Q: What is search-based program repair? Do you mean that the repair process basically proceed by trial-and-error?
A: Search-based program repair approaches solves the program repair problem using various local search strategies (e.g., genetic algorithm and random search) with the goal of optimizing the number of passing test cases. Yes, while different repair techniques may introduce some heuristics to reduce the repair time or the search space, the repair process is essentially trying to test each candidate patch until a patch that pass all tests is successfully found. 

To learn more about other relevant papers on automated program repair, refer to http://automated-program-repair.org/