Note that these example jobs are from 1997. The computer science field is rapidly evolving. C++ may no longer be the language of choice.
Significant student or "Hacker" level experience is required in UNIX and least some experience with one of the following operating systems, VMS, MAC, NetWare, DOS, or Windows 3.1+
Required Classes: C++ (prefer 2 semesters), OO programming class or a computer lab with a project that demonstrates the students understanding of the language.
Any person that applies must be productive as a C++ software programmer working in the UNIX world when they walk through the door on day #1 (at a student level). We use a team approach where two or three co-ops are assigned to an experienced engineer. The team builds program blocks for use in an object oriented data management product that Alphatronix markets into the UNIX world.
Additionally, slots are available for assignment into our testing division where they are tasked to reproduce crashes or other software failures prior to version release. These slots require an above average understanding of the UNIX os, the various shells, "daemons", the kernel, networks and NFS. When there is a crash the engineers will need to reproduce all the situations that led up to, or allowed the crash or panic. Scripts in either vi, emacs, perl, C or C++ will need to be written to automatically reproduce the environment that failed so the fix can be evaluated.
These jobs are real programming and real demanding, the weak of heart, the coasters, and the mediocre need not apply.
Foreign students are welcome as long as the school and student provide all required INS working documents.
Major responsibilities are:
The position requires a close working relationship with senior device driver developers in the DG/UX department. This is an excellent position to learn more about Unix internals, device standards, and Unix system administration.
We are looking for tomorrow's skilled inquisitive computer scientists to help us extend IBM's vision of network-centric computing. If you are an outstanding student with strong programming skills, and if your interests and background match either of the following project descriptions, we'd like to talk to you. Successful candidates will be close to finishing their undergraduate education or already in graduate school.
The Network Studies group in IBM's lab in Research Triangle Park concentrates on identifying and prototyping the next technical advances for our customers' networks. We are looking for summer and co-op students for the following projects:
For a number of reasons (see Java and the Network Centric Future in "Perspectives" at http://www.alphaworks.ibm.com), Java is well-suited to deployment in corporate networks. We are currently prototyping Java-based solutions that:
We expect that other projects will surface in the upcoming months.
As enterprises turn to TCP/IP for their networking needs, they will discover many areas for improvement. Some of these arise because commercial features were not built into TCP/IP as it grew out of an academic environment. Some arise as new technologies make more demands on the capabilities of the network.
The group you would be working with will:
IP skills are going to be a valuable asset, and this position offers an opportunity to build them in a very aggressive research environment.
Additional IBM opportuities can be found via the college employment web site, Club Cyberblue, at www.cybrblu.ibm.com.
The World Wide Web presents many opportunities for new tools and new ways of sharing information. Projects in this area will require the students to become familiar with the Internet, the WWW, and various application development languages.
Description: This project involves using a recently developed programming interface to the IBM WebExplorer to build a custom WWW application or browser. The specifications of this new program would be created along with the IBM sponsor as part of this project.
This project will implement a Smalltalk widget which provides access to WebExplorer interfaces. These interfaces provide high-level internet services including accessing Universal Resource Locators (URL), displaying HTML documents, etc. The primary purposes of this project are to explore the capabilities of the WebExplorer and to build basic Smalltalk interface classes to WebExplorer through the construction of an application or customized browser.
Students will learn about WWW, HTML, Web browser technology, and object-oriented programming in Smalltalk. Smalltalk experience/education is highly recommended.
Description: As part of a World Wide Web (WWW) based tutorial on object oriented programming it is desirable to enter and run fragments of Smalltalk code from the user's Web browser.
This project involves implementing web browser agents that allow the user to execute Smalltalk code embedded in the HyperText Markup Language (HTML) document. The Smalltalk code would be run at the client if there is a Smalltalk environment installed on the client machine; otherwise, the code would be executed at the server and forward the result back to the client for display.
The agents would be tested out on the IBM Smalltalk WWW tutorial developed by NCSU students and IBM in another Senior Design Project.
Lotus Notes provides an industry leading platform for computer-supported collaborative work. Students working on these projects will learn Lotus Notes APIs and integrate them with Smalltalk and C++ applications.
Description: This project will develop Smalltalk classes that provide object oriented abstractions of programming interfaces available in Lotus Notes. Part of this project will be to work with the IBM sponsor to pick a appropriate subset of the Notes interfaces to work with and to identify an sample application which will will be built using the Smalltalk interfaces classes.
Students will learn about Lotus Notes and the Smalltalk programming language. These are two important new technologies that are be used in the development of many new application systems. Smalltalk experience/education is highly recommended.
Description: This project will develop C++ classes that provide object oriented abstractions of programming interfaces available in Lotus Notes. Part of this project will be to work with the IBM sponsor to pick a appropriate subset of the Notes interfaces to work with and to identify an sample application which will will be built using the IBM C++ interfaces classes.
Students will learn about Lotus Notes and the C++ programming language. These are two important new technologies that are be used in the development of many new application systems. C++ experience/education is highly recommended.
Projects in this area examine the facilities that will promote software reuse. The major topics are Abstraction, Searching, Customisation, Integration and lifecycle Management of Parts.
A difficult problem in software reuse is defining a vocabulary to talk about the reusable componentry. Classification is a way of grouping the descriptions of similar parts so that they can be found. This project uses the information in the method interface, along with some developer-supplied information to create a classification mechanism.
This project will use a methodology and syntax defined by IBM to augment the IBM Smalltalk and VisualAge class library with information that helps support reuse. The paper "Using Signatures to Improve Smalltalk Productivity and and Reuse" by Burbek gives the specific approach.
Define an approach and syntax for augmenting the C++ language with information that helps support reuse and is consistent with the Smalltalk signature classification approach.
Use the approach and syntax for augmenting the C++ language developed in the previous project and implement into the CSet++ class library.
Knowing what parts are available to be reused and then finding ones that are reasonable candidates are key problems in software reuse. This project explores techniques for quickly finding parts.
Implement a Parts Catalog tool. The key criteria are Extendability, Speed of access, and Usability. Look at the Find command in Apple Sys7 as an example. Be able to handle multiple classification taxonomies. Parts libraries and frameworks from VisualAge, IBM Smalltalk and VisualAge for C++ will be used to test the utility of this tool.
The visual programming environment VisualAge is extendible via creation of new tools and reusable parts. This project creates and integrates some useful new parts using VA and Smalltalk.
Visual programming environments, such as VisualAge provide much power to the application developer. They allow the developer to create an application by pointing and clicking to establish connections between pre-built parts. When the connections are displayed in the visual layout tool, a cluttered picture that is hard to read may result.
A printout of the connections is desirable, but currently there is no print capability. Since IBM Smalltalk now contains a common printing subsystem this project would investigate the feasability of printing o the contents of the visual layout editor. The print facility would d need to break up the contents of the diagram into multiple pages and print it out.
The student will create and use parts for visual programming. The following suggestions help enable constraint based programming.
VA Comparator part - Visual programming part for boolean operations. The part would need to accept two operands and an operator (or implement a standard set of comparison actions). Would be nice if more complex expressions could be built.
VA Calculator Part - support arithmetic operations visually.
VisualAge TimerEvent Part - This part would allow an action to be connected to the timer going off. This could be either an interval of time or real time.
The book "Design Patterns: Elements of Reusable Design" describes an approach for reducing complexity in the design process by means of a standard vocabulary of patterns. Many patterns are documented and examples of their use are given. This project will implement a set of these patterns as VisualAge parts and demonstrate their use in the VA programming environment.
23 patterns are documented and organised as Creational, Structural and Behavioral Patterns. The student will pick a subset of these patterns to implement in Smalltalk.
OpenGl is a cross platform 3D graphics library. In this project the the student will learn the facilities of the library and create object oriented parts in Smalltalk. The student will then demonstrate their usefulness by creating small applications.
ScriptX is a new object oriented multimedia authoring language. In this project, the students will use this new language to create an adventure game.
Use ScriptX to author a CBT course. Organise the lecture material and film the professor. Possibly investigate speech recognition technology for creating lecture notes and organising frequently asked questions.
This project builds upon a Senior Design project from last semester. A smalltalk tutorial on the Web was started, but the entire language was not covered. This project will complete the tutorial and add multimedia content.
Testing of an object oriented application presents new problems and possiblities for software engineers. These projects look at different aspects of the testing process.
State of the art object oriented development environments provide far more than traditional OO compile-edit-debug tools. As found in Smalltalk, these environments also deliver:
- a base language component library (i.e. Smalltalk classes) - subsystems extension components (i.e. communications, db access) - tool/construction extensions (i.e. VisualAge)
Given an extensive development environment, what are the most practical metrics/models to use to determine test coverage of the environment? This problem differs from delivering a traditional OO application.
The environment includes a stable base of classes for the users to construct the end-user applications. This project involves:
- testing a given engineering extension or modification
- analyzing the required tests and how they impact the changed
components and the base components
- work with IBM test developers to recommend and document a
practical set of techniques, models, and metrics best suited
to determine test coverage for this type of modification/extension
in a large scale development environment like VisualAge and
IBM Smalltalk.
Client/Server and Network-centric application models present an extra dimension of problems when attempting to validate the correct execution. This project will attempt to answer the same questions as addressed in the OO Testing project, but adds the complexity of a distributed OO system.
The goal is to develop tools and metrics that will help in the testing of distributed applications. The environment is the IBM Distributed Smalltalk system. The project involves:
- testing a given engineering extension or modification
- analyzing the required tests and how they impact the changed
components and the base components
- work with IBM test developers to recommend and document a
practical set of techniques, models, and metrics best suited to
determine test coverage for this type of modification/extension in
the large scale development environment of IBM Distributed Smalltalk
State of the art object oriented development environments provide far more than traditional OO compile-edit-debug tools. As found in Smalltalk, these environments also deliver:
- a base language component library (i.e. Smalltalk classes) - subsystems extension components (i.e. communications, db access) - tool/construction extensions (i.e. VisualAge)
This project entails designing guidelines and templates for efficient test cases in a Smalltalk and visual programming environment (i.e. VisualAge/IBM Smalltalk). Currently, there are a wide variety of loosely defined testing techniques for this type of environment. Test methodology spans the spectrum from testing at a method-by-method level to creating large scale "end-user" applications from predefined components with a visual construction tool like VisualAge. The goal of this project is to identify and document efficient testing styles given this type of environment.
The project involves:
- studying a given engineering extension or modification - working with IBM test developers to design various testing approaches - analyzing the tests and their overall efficiency - document results and recommendations
There are several object models that are being used in the OS/2 and Windows environments - C++, Smalltalk and SOM. In this project the student will evaluate the integration characteristics of the different object models within the context of VisualAge. Performance, ease of programming, ease of reuse are key evaluation criteria.
Tools for publishing documents on the Internet provide a powerful mechanism for communicating with a large number of people at a very low cost. These projects help the students learn about the Internet, SGML and various ways of publishing electronically. These projects use the IBM product Bookmanager for Electronic Publishing which serves documents onto the World Wide Web using the Common Gateway Interface (CGI) to the Web Server.
EPE currently accepts documents written in SGML or any of several word processor formats. This project will extend the set of input formats that can be handled by EPE.
Develop filters to parse and transform standard text processor output formats (NROFF, TROFF, TeX) into Electronic Publishing Edition's internal SGML format so that they can be easily served onto the World Wide Web by BookServer.
This project will build the student's expertise is setting up an Internet server and organizing a departmental library for electronic publication of documents. The project will use EPE to build an Internet-readable electronic library of the departmental publications.
Once an electronic bookshelf is established, automatic techniques for organizing the information and finding the contents quickly become critical. This project looks at the issues of searching very large libraries of books.
Build via automation, Subject Maps or other electronic library user aides. Use these aids to assist access to large (>1000 book) electronic libraries.
The ideal candidate will be pursuing a BSCS/BSCE and have completed 2 years of the degree program. Good communication skills and basic knowledge of UNIX is required. Completed classes should include 2 semesters of programming and preferably 1 semester of communications.
Responsibilities would be to aid the CAD Systems group. 1996 CAD projects include: operating system upgrades, integration of a new backup system and tape library, new workstation installation and trasition to new Design Engineering building including a new network in 11/96.