fyi
-----Original Message-----
From: Michael Hind [mailto:hindm@xxxxxxxxxx]
Sent: Sunday, February 04, 2007 10:08 PM
To: reps@xxxxxxxxxxx; horwitz@xxxxxxxxxxx
Subject: IBM Research Summer Interns and Regular Positions
Hi Tom and Susan,
I hope you are both doing well. Below is the info for students
interested in summer and regular positions with our dept in IBM
Research.
Feel free to forward this to whatever students or faculty might be
interested.
Thanks,
Mike
IBM Research is looking for top students interested in Programming
Languages and Software Engineering, for both summer internships and
full-time positions. Our summer internship program provides students
with a unique opportunity to experience the research environment that
exists here at IBM. The program is highly competitive, and is designed
for top students who are interested in tackling challenging research
problems. Many of our students have authored papers, or even theses,
out
of their sojourn with us, and many have contributed significantly to
open
source projects.
What makes IBM Research unique is our proximity to the entire software
life cycle. IBM is a leader, not only in the software development
industry, but in the deployment, testing, and maintenance of this
software
at major customer sites throughout the world. We are constantly
exposed
to real world problems that help raise fundamental research challenges
and
opportunities, often ones that the rest of the research community is not
yet aware of.
Our department does leading research in a number of areas, all centered
on
making program development and maintenance more productive, and making
the
software produced more efficient, more manageable, and less
failure-prone
at runtime. A few representative examples of active research in these
areas include:
1. Programming Languages ? Modeling/Design
(a) Cross-Language Integration: Many programs are written in more
than
one language. Reasons for this include reuse of legacy libraries, access
to platform functionality, and efficiency. IBM research investigates
language designs for cross-language integration, aiming at programmer
productivity, static and dynamic error checking, portability, and
efficiency. Contact: Martin Hirzel (hirzel@xxxxxxxxxx)
(b) Programming Models for Networked Applications: Increasingly,
application software is being organized around collections of
loosely-coupled distributed components, often communicating over the
internet. Such components typically transform and query persistent
data,
communicate asynchronously, manage complex failure modes, and interact
across multiple administrative domains. Current programming languages
are
ill-suited for this domain because they were designed for monolithic
applications. We are designing new programming models to better support
this emerging class of internet-scale applications through the use of
abstractions that are easy to reason about and compose in a distributed
environment. Contact: John Field (jfield@xxxxxxxxxx)
(c) PL-Database Integration: The goal of the Data Access Language
Integration (DALI) project is to facilitate the development of database
and service-oriented applications, in particular with respect to better
integration of program and relational data. We are developing static
analyses that bridge an application with the databases it accesses to
allow for example: optimization of SQL-style database queries such as
those supported by JDBC and LINQ; slicing (impact) analysis between
program variables and database values. These capabilities can be
applied
to code refactoring, program understanding, coverage tools for testing,
performance tuning, etc. Contact: Mukund Raghavachari
(raghavac@xxxxxxxxxx)
(d) Real-time Java: IBM Research's work in real time garbage
collection has created an entire new market, allowing Java to be used in
application domains where it was previously considered impossible.
Current
projects include time-portable programming models, real-time
visualization
tools, dynamic compilation to reconfigurable hardware, and a lock-free,
massively scalable, autonomic real-time garbage collector. We are also
building real-time systems in Java: a music synthesizer and a
helicopter.
More information: http://www.research.ibm.com/metronome. Contact: David
Bacon (bacon@xxxxxxxxxx)
(e) Virtual Machine Performance: Higher-level and managed languages
make software development easier, but introduce serious performance
challenges. IBM Research has the unique opportunity to develop novel
solutions to these challenges, and watch these solutions have global
impact in IBM's production JVMs. Contact: Michael Hind
(hindm@xxxxxxxxxx)
2. Programming Tools
(a) Parallel Tools: The trend towards multi-core and multi-threaded
architectures calls for a new generation of tools to enable a larger
class
of programmers to effectively develop parallel programs. The goal of the
Parallel Tools Project is to develop advanced parallel programming tools
in an integrated Eclipse environment that include developments tools,
performance tools and tools for the detection of common concurrency
related errors. Contact: Evelyn Duesterwald (duester@xxxxxxxxxx).
(b) Refactoring and Program Transformation: The work on refactoring
at
IBM Research has resulted in significant advances of the
state-of-the-art,
and in the contribution of several advanced refactorings to Eclipse.
Current research efforts are focused on refactorings for advanced
language
features (e.g., concurrency), and supporting program analysis and
infrastructure. Contact: Frank Tip (ftip@xxxxxxxxxx)
3. Software Engineering
(a) Advanced Test Case Generation: High quality test suites are
necessary to validate that applications meet their requirements with the
required level of quality IBM Research is developing a radically new
approach to automating the creation of test suites using advanced
modeling
techniques and new model analysis and test planning algorithms.
Contact:
Amit Paradkar (paradkar@xxxxxxxxxx)
(b) Software Architecture and Requirements: Agile methods have taken
off of late. However, the realities of globalization mean that
application development will remain a distributed activity. We are
examining how better tools and methods around architecture and
requirements can help distributed teams to capture, share, manipulate,
understand, and manage software engineering artifacts. Can we help
teams
separated by time and space to obtain the benefits of agile methods?
Contact: Steve Abrams (sabrams@xxxxxxxxxx).
4. Software Quality/ Analysis/Verification
(a) Analyzing Non-Functional Properties: The complexity of
applications consisting of multiple components and frameworks has been
steadily increasing. The resulting performance and memory footprint
problems are often addressed too late in the development process, as an
afterthought. Several projects at Watson have made significant progress
automating the discovery of problems like memory leaks, performance
bugs,
and general footprint analysis. However, there is a long way to go: How
can these problems be addressed earlier in the development cycle? How
can
non-functional requirements be incorporated and enforced in the
development process? What can be learned from existing practices, to
improve future practice? Contact: Edith Schonberg (ediths@xxxxxxxxxx).
(b) Deep Program Analysis for Software Quality: We are applying deep
program analysis to early bug detection, design/specification recovery,
and concurrency and resource management, with the goal of improving
software quality and productivity. The central research problem in this
area is to scale deep analyses to large applications, while providing
precise and focused feedback to application developers. We are
addressing
this challenge through projects exploring a variety of analysis
techniques
and application domains. Contact: John Field (jfield@xxxxxxxxxx).
(c) Language-based Security: We are working on a number of projects
whose purpose is to enforce application security through programming
language constructs and/or program analysis. The problems addressed
include design and development of automated tools for access control and
information flow security enforcement. Contact: John Field
(jfield@xxxxxxxxxx).
(d) Visualizing the Execution of Distributed Applications: A
currently
popular approach for reducing cost and complexity is building
applications
by composing services accessible over a network (SOA). A key challenge
in
this paradigm is obtaining an understanding of the overall activity
triggered by the operation of a composite application. This information
is
critical for debugging, testing and understanding resource utilization
of
such applications. Our research is directed towards the creation of new
tools, methodologies and environments that provide a deeper
understanding
of SOA applications. Contact: John Morar (morar@xxxxxxxxxx)
5. Usability:
(a) Human Centric Tools: Our tools, applications and services are
becoming more and more interconnected and complex. We are looking at
ways
to make these tools usable and simplify our environments. This ranges
from
new programming models for web components to end user programming, to
User
Centered Design methodologies for these new environments, to the
pragmatics of large scale SOA implementations, to glancable interfaces
and
visualizations. Contact: Juerg von Kaenel (jvk@xxxxxxxxxx)
6. Virtualization:
(a) Virtual Appliance Computing: Virtual appliances (live software
state encapsulated in virtual machine sandboxes) are rapidly replacing
install images as the unit of software packaging, distribution and
management. This project is exploring ways to use the sandbox as a hook
through which external tools can monitor, analyze and manipulate virtual
state, and enable radically different paradigms for working with
software.
Contact: Vas Bala (vbala@xxxxxxxxxx)
7. Web 2.0 / Semantic Web
(a) Desktop Widgets, Situational Applications and End User Mashups:
Web
2.0 technologies are rapidly reshaping the user's experience on the
World
Wide Web. A new, post-windows, GUI model is emerging in the form of
desktop widgets like those offered by Apple, Yahoo, Google, Mozilla and
others. The evolution of the web user experience from hypertext
browsing
to dashboards of ATOM-driven "live" widgets that exploit multiple, large
format LCD monitors and other ambient displays is fundamentally changing
the way we interact with information, services and communities over the
Internet. In this research effort we are exploring this new world in
the
context of End User Programming. What must be done to empower end users
without training in programming to create, deploy, share and enhance
widget-based mashups and other situational applications? Contact: Sam
Adams (ssadams@xxxxxxxxxx).
(b) Scalable Ontology Reasoning: The use of ontologies and need for
semantic retrieval is increasing rapidly. However, the inability of
reasoners to scale to large knowledge bases is a major inhibitor. We
have
been working on promising new technology for reasoning over very large
knowledge bases in secondary storage, with excellent initial results.
Our
technology is based on aggressive summarization. We are interested in
making semantic retrieval practical, and looking at real use cases to
validate our work. Contact: Edith Schonberg (ediths@xxxxxxxxxx).
Students interested in summer jobs in programming languages and software
engineering at the T.J. Watson Research Center (NY area) should send a
resume to the appropriate contact listed above or to Aditya Kalyanpur,
our
summer internship coordinator (adityakal@xxxxxxxxxx).
For more information about Programming Languages and Software
Engineering
Projects at IBM Research, see
http://www.research.ibm.com/compsci/plansoft/index.html
------------------------------------------------------------------------
-
Michael Hind, Manager, Dynamic Optimization Group
IBM Watson Research Center
http://www.research.ibm.com/people/h/hind
hind@xxxxxxxxxxxxxx, 914 784-7589, tie: 863-7589
Jikes RVM is on sourceforge: http://jikesrvm.sourceforge.net
|