Ezgi

Archive for the ‘GSoC’ Category

I am a GSoC’er!!!

In GSoC, Life on April 22, 2009 at 10:53 am

I am accepted to GSoC 2009 !!! Here is my proposal. I am very surprised , my dream will come true at least! By the way, I will be doing my project in Dublin, Ireland if I take my visa. It will be a gorgeous summer fulled with learning, coding, drinking Guinness, visiting castles if I have time… Than I will turn back to Turkey at the end of August to relax and enjoy the late summer with my family. Now, I should get rid of the exams as soon as possible and have time to search about XML, Zemberek, natural language processing and preferably Language Tool.  It will be the busiest summer in my life! I hope I can cope with it!

Enjoy your summer!!!

OpenOffice.org Turkish Grammar Support

In GSoC on April 22, 2009 at 10:38 am

Project Abstract:

The aim of this project to add grammar support for Turkish language, and write an Office Suite that integrates it. The suggested language checker, Language Tool is a corpus level rule-based language checker that will find errors for which a rule is defined in its XML configuration files. Rules for more complicated errors will be written in Java.

Project Detailed Description:

Linguistic Background :

Syntactic analysis, or syntactic parsing is the process of analyzing an input sequence in order to determine its grammatical structure, i.e. the grammatical relationships between the words of a sentence, with respect to a given grammar ( in this project Turkish). Turkish is an agglutinative language in which words are made up of a linear sequence of distinct morphemes and each component of meaning is represented by its own morpheme. The minimal meaning-bearing unit in a language is defined as a morpheme. For example, the word “yollar” consists of two morphemes, “yol”, and “lar”. Morphemes can be further categorized into two classes, stems, and affixes. Hence, in the previous example, the morpheme “yol” is the stem of the word “yollar”, and the morpheme “lar” is an affix that makes the word plural. Rules specifying the ordering of the morphemes are defined by the term morphotactics. For example, in Turkish the plural suffix “-ler” may follow nouns. Morphological features of words are produced through morphological analysis. Hence, any morphological processor needs morphotactic rules, orthographic( spelling) rules, and lexicons( vocabulary) of its language. In this project, I will separately analyze those components with language processing methods such as Link Grammar, or

Distinctive properties of Turkish language and computational analysis[5]:

1.

Turkish has vowel harmony. For this reason, during the affixation process, the vowels in the suffixes have to agree with the last vowel of the affixed word in certain aspects to achieve vowel harmony. Because, the spell-checker can handle vowel harmony, this is not a big problem for grammatical check.
2.

In Turkish, the basic word order is SOV, but constituent order may vary freely as demanded by the discourse context. For this reason, all six combinations of subject, object, and verb are possible in Turkish. So, while parsing the text, these orders should be considered. New XML rules can be written according to this pattern.

I. O (S) okula (O) gidiyor (V) // She her school going

II. Okuluna (O) o (S) gidiyor (V) // Her school she going

III. Okuluna (O) gidiyor (V) o (S) // Her school going she

IV. Gidiyor (V) okuluna(O) o (S) // Going her school she

V. O (S) gidiyor (V) okuluna (O) //she going her school

VI. Gidiyor (V) o (S) okuluna(O) //going she her school
3.

Turkish is head-final[1], meaning that modifiers always precede the modified item. Therefore, these patterns should be included to check the grammar. For example:

- Object of postpositions1 precede postpositions.

Ezgi ile gittin. (You went with Ezgi)

Ezgi with (you went)

- Adverbs precede verbs or adjectives.

Çok iyi bir iş (A very good work)

Very good a work

- Adjectives precede nouns.

Zeki çocuk (The clever child)

Clever child

1.

Turkish is an agglutinative language, with very productive inflectional and derivational suffixation. A given word form may involve multiple derivations[2]. Moreover, inflectional suffixes have grammatical roles. To be able to add these patterns, new Java classes need to be written, or some basic suffixes such as plural suffix can be added to the source xml file so that these rules are thought to the parser.

NOTE : Although there are lots of distinctive rules for Turkish Language, I only gave some basic examples to indicate how those differences can be handled. Some of the multi-word expressions such as “ olsa olsa” or “ koşa koşa” may not be added to source xml file directly, but Java classes can be written to give the rule of multi-word expression for this pattern. However, it is not guaranteed to do so at the first place, since there can be different types of multi-world expressions that vary from adjective to adverb, or emphatic adjectival forms involving the question suffixes such as “ güzel mi güzel”. There can be also some problems with idiomatic expressions such as “ gözü gönlü açılmak”( to be cheered up) or inverted sentences etc.

Language checking process/pseudo-thoughts ( as used in Language Tool):

1.The text to be checked is split into sentences, the Zemberek Library will be used

2.Each sentence is split into separate words

3.Each word is assigned its part-of-speech tag(s) , POS (e.g. yollar= plural noun, bitti = simple past verb)

4.The analyzed text is then matched against the built-in rules and against the rules loaded from the source XML file.

5.The patterns are extracted and compared, the messages like suggesters “ Do you mean this” will be indicated.

6.Spell-check( preferably)

Language Tool looks like a good candidate at first glance, to add Turkish Grammar support. It is based on corpus level rule checking. It uses part-of-speech (POS) tagging that is a grammatical tagging based on its definition, as well as its context. We are thought a simplified version of it in the primary school to identify words such as nouns, verbs, adjectives etc. It has already an Office Suite, so it will be easier to integrate Turkish support with it. On the other hand, I would like to look at other examples such as GRAC( based on learning algorithms, and written in Python), An Gramadóir[3] (intended as a platform for the development of sophisticated natural language processing tools for languages with limited computational resources, written in Perl) and search about the METU-Sabanci Turkish Treebank and other tools or libraries.

There is another methodology which is named Link Grammar. It works on another principle, i.e., it checks the grammatical structure of the sentence and builds relations between pairs of words, rather than constructing constituents in a tree-like hierarchy. It means that it cannot possibly catch many errors that Language Tool describe in the rules but should be able to catch some irregular grammar structures. However, it doesn’t offer suggestions, in contrast to the Language Tool. Moreover, most frequent style and usage mistakes are not violations of a deep grammar structure, so it won’t complain about frequent mistakes.

There are some basic steps to add Turkish support for the Language Tool:

*develop a tagger dictionary for Turkish that will be so small in size by the use of fsa( fsa .dict file, make use of Zemberek)

*create a few or tons of xml rules as I described basic distinctive properties of Turkish, the rules that are specific to Turkish will be added carefully

*create java classes: Language and Tagger and a lot for more complex rules and errors

*create a …tr.properties file ( because Turkish characters will create a problem, Eclipse Resource Bundle editor ( eclipse-rbe) can be an easy solution )

*validate with Junit tests, and tests for the tagger

The checks happen in LanguageTool.check(String) function. When there is a word that is unknown to the dictionary, it will be tagged with UNKNOWN post-tag. I will also make use of Zemberek Libraries. For example, it is not possible to know all proper names. Those words silently can be ignored and we can use even a simple heuristic. By the use of Zemberek, if it is capitalized and has UNKNOWN post-tag, we can deduce that it is a proper name. There can be exceptions but it can be a way to handle them.

Basic rules can be written as XML rules so that you can easily get what you want. For phrases, regular expressions, ambiguous words, words with multiple corrections, these rules are simply more flexible, and I won’t waste my time for writing code that does the same thing as another piece of Language Tool’s code. Actually, I could make a generic tagger class that takes only dictionary
and reads parameters from files. The most standard tag-set for Turkish language should be used. Zemberek will be very helpful in this manner, because it has already a tagger library. It carefully analyses the root of the word and has Turkish language based syllabication, suggestion, suffix finder methods.

Turkish rules are needed to be checked against a large corpus ( for example METU Turkish Corpus [3] or preferably Zemberek Corpus). However, in most cases, I really need to write special Java rules so that the grammar checking will be useful. So, implementing a new language in Language Tool requires translation, careful rule analysis, specific Java classes etc…

In Language Tool, you can easily (using ) control which rules can be turned on/off by the user, as each group has its own ID. This is important, as people might disagree about what’s an error. If you don’t use , all rule can be turned on/off separately.

Testing

In order to check how the selected tool find grammatical defects and possible mistakes, all the collected examples and texts will be evaluated and some bugs will be added to indicate the process of verification. Moreover,I can easily provide XML pattern tests and Junit tests since I am experienced with Junit testing. XML format is checked quite thoroughly by validation and test cases. Manual checks should be the least used form of quality control of the code. Moreover, it is really easier to work on rules when you can use Junit tests which make sure that your notation does what you really want.

Documentation

Results of tests and verifications, methods of rule additions and process of parsing will be documented. Fortunately, there will be statistical values that indicates the results of the grammar check, errors, exceptions etc, when the Turkish Grammar support is finished by the end of this summer. Zemberek has some classes that makes getting statistical information about the suffixes, stems, words easy. So, it will help me to keep track of statistical data by reusing the existing code. If I have time,I will write plugins to link Emacs/KWrite.

Community Interaction

I will be in touch with other developers and researchers who are interested in Natural Language Processing and computational grammar check algorithms. The process of development will take place fully in the open. All collected data will be hosted on a web page, so users and interested developers will always have access to the latest version of the collection. I will also keep track of my development at my blog http://ezgicicek.wordpress.com/ and everybody will be able to leave comments.

Why I am interested in this project, not the others?

I find this project very interesting and necessary. It worths to spend my summer. Firstly, my abilities correspond with the project requirements and I believe myself that I can complete this project in the limited time. I would not want to involve in a project that exceeds my knowledge and capabilities, since it would be painful to struggle with it in the summer.

Secondly, there is a need for a grammatical checker for Turkish. Although there are some useful sources like METU Turkish Corpus or Zemberek for different purposes, an integrated grammar checker would be used and appreciated in the community. When the project is completed, I can easily tell anybody who is not familiar with programming that I achieved to add Turkish grammar support for a given text, fortunately for Open Office. I hope, they can understand me, and use it.

Project Time-line:

I have developed a schedule to stay focused and motivated.

April 14 – May 26 Requirements stage: Research process, which includes reading documentation, exploring Zemberek and Natural Language Processing, collecting background information. Community interaction, meeting with mentors and other colleagues, brain storming and initial planning and designing.

May 26 – July 10 Midterm stage: Testing and coding process with weekly evaluations until official midterm evaluation.

July 10 – August 11 Development Stage: Coding process continues with tests and documentation and weekly evaluations.

August 18 – September 1 Evaluations: Final evaluations include all process of development

September 3 Submission: Submitting code

Final Point

My interest on this topic can keep me happy and working so I do not think to give up after the formal process is ended. Actually, I can write my senior project on this topic, since there is a great amount of academic research on the NLP. I suppose that there will be lots of things even after summer about this project since Natural Language Processing is a wide area. In the process of researching about ways of Turkish Grammar check and Language Tool, I also feel that my experience in this area has increased. I believe I am an excellent candidate to work on this project because I will be working in my spare time leading this project, and I am the one who can complete this project successfully. I would really like to work on this project–not only because of my own passion towards free software and Java–but also to contribute back to the open source and Pardus community.

Links:

Electronic Journal, my Java project, please check it out, and read the instructions to use it :

http://code.google.com/p/e-journal/

References :

[1] Şehitoğlu, O. Tolga. 1996. A Sign-Based Phrase Structure Grammar for

Turkish.M.S. Thesis, Middle East Technical University, 1996.

[2] Eryiğit, G., and Oflazer, K. 2006. Statistical Dependency Parsing of

Turkish. In Proceedings of EACL 2006 11th Conference of the European

Chapter of the Association for Computational Linguistics, Trento, Italy,

April.

[3] http://borel.slu.edu/gramadoir

[4] http://www.ii.metu.edu.tr/~corpus/treebank.html

[5]İstek, Özlem, 2006, A Link Grammar For Turkish, M.S. Thesis

GSoC 2009 and updates from Ezgi!

In GSoC, Life on April 2, 2009 at 11:24 pm

Yeah, I am alive :) It is hard to write even if I would like to do so. I can’t have time to write because I am reading a lot ( biiip : it is an excuse, it is an excuse). Anyway, whatever the reason, now I am writing. It is time to send proposals for GSoC. Unfortunately, this year I am extremely busy as a usual second year  CS student, so I only sent one application to the Pardus.  I will put the proposal on the blog, after I learned the results.  It is a very different and useful project idea, that inspires me for my final year project. I will give the details later, but let’s look what happens if I am accepted :)

- A great experience, good reference, lovely Google t-shirt,  mmm….

-Money, money, money… must be funny :) I hope that 4.500$ will be enough for my accommodation in the U.S. Since Bilkent is not paying for the dorms, I will probably rent a room in San Diego. Because dorm rates start from 9.000$, I am not absolutely staying in there, even if I win the lottery.

- I could spend my summer with my family, writing code for whole summer, staying in tune with my own programme. Sounds good! May be I can visit Erman in Italy :)

What happens if I am not accepted, as last year :

- Life is going on, first week pasts with pessimistic thoughts, but when I get my linear examination result, it will be unbearable.

- Drink a glass of water!

- Look for internship advertisements and wait replies from the internship applications flied to Ireland.

Results of GSoC 2008

In Computer Science, GSoC on April 24, 2008 at 4:55 pm

The results were announced on Monday, however I am not accepted. Although I feel unhappy about this, everything is going on… I have just tried to participate and understand the community, I plan to apply next year again. May be the project selection was so complicated for a first year computer engineering student. Anyway, I am accepted for summer internship by Portakal Teknoloji. It is a very good chance to improve myself throughout the summer.

On the other hand, Our project is at Implementation Stage. We have divided the work to implement, but I have examinations :( What a busy life…

Edit after 1 Month : I have contacted with John Penix, from Java Path Finder team and ask why I was not accepted. After some mailing traffic, he told me that I was one of the possible ones to be selected. However, they give priority to the harder projects. One of my rival was a M. Sc student but his proposal was not good as mine ( as Jhon said) :) . Although I am not in, it is good to know that I was very near to be accepted.

GSoC 2008 Proposal for Ptolemy II

In Computer Science, GSoC on April 21, 2008 at 5:03 pm

I want to study on wireless networks which builds on the discrete event domain to support modeling of wireless and sensor network systems. In this area, channel models mediate communication between actors and the visual syntax does not require wiring between components that is the well-known property of wireless systems. One of the reasons I want to study this project is my interest in wireless systems that has an amazing impact on military and many public application such as environment and habitat monitoring, health care applications, traffic control and home automation. The important concerns about wireless systems are mobility when the sensors nodes and base stations are not stable, security and middleware, especially middleware focus on the design of middle-level primitives between the software and the hardware. In the Ptolemy project, modeling the wireless networks will contribute to testing the infrastructure and user interfaces of Ptides. It will also be an example of Ptides’ modeling.

Modeling & Design

As in the main design methodology of Ptolemy project; heterogeneous modeling, simulation, and design of concurrent systems will be used in this specific project. However, rather than designing
the wireless networks model from scratch, the more useful mechanism is to reuse existing models and then modify the required type of modeling.

Actor Oriented Design
Ptolemy II supports actor-oriented design which somehow contrasts (and complements) with object-oriented design by emphasizing concurrency and communication between components. Especially, one of the reasons I want to improve myself in discrete event systems is to learn the differences and drawbacks of each system. Although Java is an object-oriented language, the cooperation of it with actor-oriented design needs considerable attention. One of the developed characteristics of actor-oriented design is the abstraction of structure and modeling it without saying anything about how it works and organizes. Moreover, actor oriented programming can conveniently represent adaptive systems, systems with multiple operating modes, systems without fixed structure, and systems that control other systems. Ptolemy II is a Java-based design environment that supports the construction and execution of hierarchical, reconfigurable models using actors [1].

Code Generation

Ptolemy II has two approaches to code generation. In the first approach, the code generator Copernicus is used as a component specialization framework built on top of Java compiler toolkit called Shoot. It can be used to extend and reuse the core mechanism of Ptolemy II to generate a new model, especially wireless network model. The second approach has components as generators, but uses an architecture where the interfaces of components are defined exactly as in ordinary Ptolemy II actors, and “helpers” are used to generate code for particular targets.
As an existing example, VisualSense separates software applications that are built on Ptolemy II configurations and can be examined to gain a wider perspective [3].

Development Methodology

Research
Before starting the project, I must obtain enough background information about Ptolemy II project. Ptolemy II web page will be my primary database for research to begin with. I will also benefit from other’s research papers and documents.
Testing
In order to prevent software defects and possible bugs, all the components of the project will be tested using some methodologies. Jacl, which is a 100% Java implementation of Tcl that is used for testing Ptolemy II, will do testing. Each Java directory will contain a test subdirectory that contains Tcl files that use Jacl to test the project Java code [2].

Community Interaction
I will be in touch with other developers and researchers who are interested in wireless network modeling part of Ptolemy II. Process of development will take place fully in the open. All source code will be hosted on a web page, so users and interested developers will always have access to the latest version the of the code. I will also keep of track my development at my blog http://ezgicicek.wordpress.com/, and users will be able to leave comments about the code as it is being developed.

Schedule
I have developed a schedule to be stay on time and motivated.

April 14 – May 26 Requirements stage: Research process, which includes reading documentation, exploring Ptolemy II, collecting background information. Community interaction, meeting with mentors and other colleagues, brain storming and initial planning and designing.
May 26 – July 1 Midterm stage: Testing and coding process with weekly evaluations.
Midterm evaluation
July 10 – August 11 Coding Stage: Coding process continues with tests and documentation and weekly evaluations.
August 18 – September 1 Evaluations: Final evaluations include all process of development
September 3 Submission: Submitting code

Deliverables

- Model of wireless network system with the design and working code which includes:
detailed documentation and testing infrastructure
user interfaces of wireless network model

Personal Information & Motivation

I am a first year computer-engineering student at Bilkent University, in Turkey. I have been taking Java classes since the beginning of September and my GPA is 3.86 out of 4.00.In my Java course, I have been studying on a Java based educational project in a group of 4 people. Our project provides users with the range of facilities to improve the design skills in Java programming such as pseudo-code and UML structures. The project will be completed in the second week of May. The requirements and user interface stage of the project have already been completed. In this project, I gain experience with UML structures, Eclipse and GUI, which help me to improve my skills in Java. I have 2 years experience with Linux. My main operating system is Ubuntu, Gutsy Gibbon, before that I was using Pardus (OS developed by Turkish developers) and Kubuntu. I can allocate 3 or 4 hours until the end of May to Ptolemy II project. Then, my classes will end at 1 June and the time I can allocate will increase to 7-9 hours per day. Until the end of August, I can keep on working with this schedule. My interest on this topic can keep me happy and working so I do not think to give up after the formal process is ended. I suppose that there will be lots of things even after summer about this project. In the process of researching about Ptolemy II, I also feel that my expertise in this area has increased. I believe I am an excellent candidate to work on this project because I will be working in my spare time leading this project. I would really like to work on this project–not only because of my own passion towards free software and Java–but also to contribute back to the open source and Ptolemy II community.

References

1- Neuendorffer, Stephen, Actor-Oriented Metaprogramming, <http://ptolemy.eecs.berkeley.edu/publications/papers/04/StevesThesis/>
2- Testing Ptolemy II<http://ptolemy.eecs.berkeley.edu/ptolemyII/ptIIlatest/ptII/doc/coding/index.htm>
3- Faq Ptolemy II web page <http://ptolemy.eecs.berkeley.edu/ptolemyII/ptIIfaq.htm#CodeGen>

GSoC 2008 Proposal for Java Path Finder

In Computer Science, GSoC on April 21, 2008 at 5:01 pm

Name: Ezgi Çiçek

Project Title: Creating a set of JPF textbook examples

Education and Software Development Experience & experience with Java and object-oriented design patterns:

I am a first year computer-engineering student at Bilkent University in Turkey. I have been taking Java classes since the beginning of September and my GPA is 3.86 out of 4.00.In my Java course, I have been studying a Java based educational project in a group of 4 people. Our project provides users with the range of facilities to improve the design skills in Java programming such as pseudo-code and UML structures. The project will be completed in the second week of May. The requirements and user interface stage of the project have already been completed. In this project, I have gained experience with UML structures, Eclipse and GUI, which help me to improve my skills in Java. I have 2 years experience with Linux. My main operating system is Ubuntu, Gutsy Gibbon, and before that I was using Pardus (OS developed by Turkish developers) and Kubuntu. I can allocate 3 or 4 hours in a day until the end of May to JPF project. On June 1, my classes will end and the time I can allocate will increase to 7-9 hours per day. Until the end of August, I can continue working with this schedule. My interest on this topic can keep me happy and working so I do not think to give up after the formal process is ended. I hope that even after the summer, my work on this project may continue. In the process of researching about Java Path Finder, I also feel that my expertise in this area has increased. I believe I am an excellent candidate to work on this project because I will be working in my spare time leading this project. I would really like to work on this project — not only because of my own passion towards free software and Java — but also to contribute back to the open source and Java Path Finder community.

Why I’m interested in working on Java PathFinder: This part is integrated to other parts of proposal.

Have you contacted anyone on the JPF Team about this proposal: I have contacted with John Penix and Peter C. Mehlitz about the book I select for this project and the details of proposed projects. Their recommendation was very helpful for me.

Experience or knowledge of software testing and verification tools: I have installed JPF and started to test with it. I have also used JUnit for my Java project.

Project Details:

Background & Synopsis ( Abstract Part)

The best code developers are typically users first. As a curious user, in my project, I will apply to verification techniques by collecting different programs from Java textbooks and then I will add some bugs to show how Java Path Finder finds bugs. Java Path Finder is an explicit state model checker for Java byte code, whose focus is on finding bugs in Java programs. The main goal of JPF is to prevent modeling effort or at least use a real programming language for complex models. It can be used for closed systems but not for platform specific native Java code. The current version of JPF has its own JVM and garbage collector. So, the aim in this project is to indicate that formal methods of verification and testing are applicable to everyday software. Java gives the capability for anyone to write concurrent programs, so the need for a model checker will be inevitable in the future. I want to participate in this project to demonstrate the skills of JPF on verification and how JPF is an advantageous model checker for Java. It will also contribute to my learning process and understanding of Java and how JPF works.

Studying programming languages results in some challenges that will drive research in a new direction as the necessity of analysis of programs written in modern programming languages grows. JPF addresses this necessity by developing verification and testing environment for Java, especially with multi threaded and interactive programs where unpredictable interleaving can cause errors. The multi-threading and object-oriented features of Java make it a suitable verification environment. Moreover, Java is compiled into byte code and the analysis can be done at byte code level, which implies that the platform independent feature of Java can be applicable in the use of JPF, and any language translated into byte code can be used with JPF. Although someone can claim that most of the errors are caused by design faults, programs often contain fatal errors such as deadlocks and critical section violations despite the existence of complete designs [1].

Development Methodology

While selecting a program to analyze, I will be aware of some potential drawbacks and advantages. Although JPF can analyze any program written in pure Java, there are some exceptions such as the java.net library and partitions of java.io library. When a Java program calls methods that have no corresponding byte codes, access to a file system, communicate over a network, or contain GUI code, the program can not be analyzed easily. It can be handled by writing wrapper classes or modifications. Moreover, I will select programs with multi-threading properties for efficient testing. As a result, selected programs should have distinct characteristics that will contribute to the range of JPF examples.

Unlike other tools, JPF will output the entire flow of events that leads to a bad state. It helps identifications of deadlocks and other common but difficult to identify concurrency errors. JPF examines all combinations of paths / interleaving to account for the non-deterministic nature of the program. In the analysis of selected programs, the important thing is to indicate how JPF finds the error or bug and the scalability of it. All the verification results will be explained in detail to indicate the roots of verification and how JPF found defects.

Research

Before starting the project, I must obtain enough background information about Java Path. The JPF web page will be my primary database for research to begin with. I will also benefit from the research papers and documents of others. After I get detailed information about JPF and its usage, I will start to focus on the textbooks. I think code examples of the textbook “Multithreaded Programming with Java Technology”, by Bil Lewis and Daniel Berg can be very beneficial. The textbook covers typical threading topics like synchronization, deadlocks, and race conditions. Lewis and Berg even cover thread issues with RMI and optimization techniques to improve performance. In addition, “Concurrent Programming in Java”, by Doug Lea that explores proper design of multithreaded programs looks as a considerable resource for examples. However, I want to evaluate several textbooks to obtain different kinds of programs.

Testing

In order to check how JPF find defects and possible bugs, all the collected programs will be evaluated and some bugs will be added to indicate the process of verification. Various programs will be evaluated to demonstrate the verification mechanism of the JPF for deadlocks and unhandled exceptions. Moreover,I can provide my own property classes, or write listener-extensions to implement other property checks. In JPF, the test system is placed in a separate test directory tree. There are several methods to test a program such as explicitly invoking JUnit tests and directly running JPF without Junit, or running on a normal JVM and so on. However, the preferred testing mechanism is to support various levels of inspection and debugging in order to detect all bugs and defects.

Documentation

Results of tests and verifications, methods of debugging and process of testing will be documented as in the JPF documenting format. All the comments will be in java-doc format unless the otherwise is stated. Additional bugs intentionally included into the program will be specified in terms of state and properties. There can be comparison tests to demonstrate the differences between other debuggers and how JPF finds bugs. The results of these studies will be documented as well. Initially, the expository information about selected programs will be given to demonstrate the previous and modified state of the program.

Community Interaction

I will be in touch with other developers and researchers who are interested in verification and testing part of Java Path Finder. The process of development will take place fully in the open. All collected data will be hosted on a web page, so users and interested developers will always have access to the latest version of the collection. I will also keep track of my development at my blog http://ezgicicek.wordpress.com/ and everybody will be able to leave comments about the code as it is being developed.

Open Source

When the JPF project has been an open source project, It enabled other people to improve the Path Finder software. It is a very good development as a leverage the open-source community. It also contribute to finding defects in JPF and It will fasten the process of development. As a Google Summer of Code organization, the JPF project has also proved that the power of collaboration has an important impact on the development of it.

Schedule

I have developed a schedule to stay focused and motivated.

April 14 – May 26 Requirements stage: Research process, which includes reading documentation, exploring Java Path Finder, collecting background information. Community interaction, meeting with mentors and other colleagues, brain storming and initial planning and designing.

May 26 – July 10 Midterm stage: Testing and adding bugs process with weekly evaluations.Midterm evaluation

July 10 – August 11 Development Stage: Verification process continues with tests and documentation and weekly evaluations.

August 18 – September 1 Evaluations: Final evaluations include all process of development

September 3 Submission: Submitting code

Deliverables: The main goal of project is creating a collection of JPF examples to demonstrate how JPF find bugs, so as I explained before collection of tested Java programs with specific documentation and analysis of verification will be the product of this project.

References and links :

References

1- “Model Checking Programs” ( 2002) Willem Visser, Moffet Field,Klaus Havelund, Guillaume Brat ,SeungJoon Park and Flavio Lerda

2- Java Path Finder web site < http://javapathfinder.sourceforge.net/>

Links :

My web-blog : http://ezgicicek.wordpress.com/

Actually, I have a web-page for my Java project but it is not public at Moodle < http://moodle.org/>. It will be published after the project completed.

Pof pof…

In GSoC, Life on April 5, 2008 at 7:13 pm

On wednesday, Bilkent University Computer Club ( BUCC) organized a linux kernel seminar. As a general secretary of club,  I were there to help registration and because of my interest in Linux. However, it was the most awful seminar which I have attended so far. The talker used a boring slide show to present the important points(!). However, the background was just a plain penguin and it has never changed. The tone of his voice was very stable and sleepy. After the second period of the seminar, there were only 3 or 4 people rather than the club members. After the real presentation, the talker has demonstrated a bit of compilation, but we could not see the end of it:) I thank to the one who insists on inviting this talker.

On the GSoC 2008  side, the project I applied is very popular that 14 people have applied so far. It looks depressing. Nevertheless, it is not a problem for me, because I have already started to learn lots of things about concurrent programming and testing mechanisms. Today, I went to the library to search about the books related to the project. They are pretty good but quite out of date. I will probably need the new versions for further details. There is no chance other than waiting.

Waiting…

In GSoC, Life on April 2, 2008 at 7:42 am

I have said “I have formally applied to Google Summer of Code. I hope two weeks will past as soon as  possible.”  on Sunday. However, Google decided to postpone student applications deadline to 7 April and the announcements to 21 April. In this time, I will have a chance to improve my proposal, if I can get feedback from mentors.Last week was incredibly busy for me, It would be better to hear these news before.

Google Summer Of Code 2008

In GSoC, Life on March 28, 2008 at 10:05 pm

It is an amazing organization that give students a chance to focus on a project and improve themselves in a specific topic throughout the summer. I have been informed by Pardus Planet a week ago, and started to research about some projects.I have been preparing my proposal for Google Summer of Code. Actually, I had also heard someone from Turkey who attend to GSoC last year. It is a very good opportunity for me to improve my Java skills. Especially, Java Path Finder project attracts me very much. The goal of this project is to collect a set of Java programs from several textbooks to verify with JPF. The JPF project has been developing for 9 years mostly by researchers from the Robust Software Engineering (RSE) group at the NASA Ames Research Center. Although my childhood dream for being an astronaut did not come true, I can have an opportunity to work with this unique group.

Another project which looks interesting is from Berkeley. Ptolemy II project is also considerable for me. My interest in wireless systems can develop by this project. I will put my proposals in here later on. I hope I can wear the lovely T-shirt of GSoC as soon as possible:)