HomeAboutSolutionsTechnologyCareersNews & EventsContact Us
Why Work at ITA Software

Search for Jobs:  
 

Data and Reporting Programmer

Ever wonder how a company can run 2,000 linux servers in concert to produce a set of custom services? At ITA, we're running hundreds of different applications to seamlessly offer 24x7 services to customers. Doing so involves traditional software development, but also requires a set of engineers who can marshal processes and data in a distributed Linux environment. We're looking for programmers who can understand a domain, are experts in leveraging a UNIX/Linux environment, and who have
experience programming in a distributed setting. While doing so, you
will play an integral role in designing and deploying products in a 24x7
environment.

Responsibilities:

Responsibilities:
* Design, implement, and maintain software to automate, analyze, and
monitor many of the complex operational functions of ITA's Data and
Reporting Team
* Update processes for data deployment
* Identify and resolve errors in data transmissions
* Identify opportunities for and implement processes for automation
* Diagnose and debug complex problems
* Work with different internal teams to understand product domains
* Train downstream operations staff, including the production and
revision of internal documentation.
* Help to maintain and grow a production environment in a way that makes the system increasingly maintainable

Qualifications:

* Extensive Perl, Python and shell script programming experience in a
UNIX/Linux environment
* Experience designing end-to-end solutions, including code, hardware,
and networks
* Bachelor's degree in CS, or equivalent work experience
* Strong knowledge of file format specifications

Special Knowledge/Skills Required:

* Ability to constantly learn new domains, both technically and
non-technically
* Ability to prioritize efforts without constant management involvement
* Must have excellent problem solving skills, and a willingness to
exercise them on a daily basis


How to Apply
If you are interested in this position, please solve one of the puzzles below and send your solution with your resume to us via this link.


Puzzles:

Please select and solve one of the puzzles below to give us an idea of your problem-solving ability and coding style. Unless otherwise specified, you may use any freely-available language you like. Puzzles submitted in C++, Lisp, Python, Java or Perl will be reviewed most promptly, because those are the languages we use every day; if you choose another language, it may take us longer. No pseudo-code, please! In your submission email, along with your source code, please include your program's final answer; a brief (1-2 paragraph) description of your approach and any trade-offs you made (say, for generality, speed, or ease of implementation); and instructions on how to test your program. In order to ensure that your puzzle solution does not get caught in our mail filters, you should zip the source code file(s) and name the archive "Programming_Puzzle_Submission-NameofthePuzzleyouSolved" e.g. "Programming_Puzzle_Submission-RollYourOwnChatServer.zip".

  Schedule File Parsing and Error Detection


Bay State Express Airlines, will be starting service on two new routes; a shuttle service between Boston and Washington and a seasonal service between Boston and Fort Lauderdale. Bay State is creating a schedule file to help plan their new flights. They need a program to locate errors in their schedule file as well as print reports.

Implement a program to read the provided schedule file, schedule.txt, and output all data in the format requested. The program must detect and report any potential errors or inconsistent data contained in the input file.

The contents of the schedule file are to be reported using a format string constructed with any of the codes (A-L) listed below. The format string and input file path locations are passed to the program as command line options. The requested output must be printed on STDOUT. Any errors or inconsistent data in the inputted schedule file are to be described in output to STDERR.


------------------
Schedule File Input Format:

Record 1, Schedules:
 

Bytes
From
 
To
Length in Bytes Data Element Format
1 1 1 Record Type Always 1
2 5 4 Flight Number Integer, Right Justified
6 7 2 Carrier Code Alphanumeric
8 10 3 Departure Airport Code Alphabetic
11 13 3 Arrival Airport Code Alphabetic
14 20 7 Days of Operation Boolean (0 or 1)

Each of the seven fields 14-20 corresponds to a weekday Mon-Sun
 
21 29 9 First Day of Operation Two Digit Day
        First 3 Letters of Month
        Four Digit Year
30 38 9 Last Day of Operation Same Format as First Day of Operation
39 42 4 Departure Time Two Digit Hour (24-hour format)
        Two Digit Minutes
43 6 4 Arrival Time Two Digit Hour (24-hour format)
        Two Digit Minutes
47 55 9 Meal Service Alphabetic, Left Justified
Snack, Breakfast, Lunch or Dinner

Record 2, Airport Names:
 
Bytes
From
To Lenth in Bytes Data Element Format
1 1 1 Record Type Always 2
2 4 3 Airport Code Alphabetic
5 34 30 Airport Name Alphanumeric, Left Justified
         

Output Format Codes:

A = Flight Number
B = Carrier Code
C = Departure City Code
D = Arrival City Code
E = Departure City Name
F = Arrival City Name
G = Days of Operation
H = First Day of Operation in format DDMMMYYYY (same as input format)
I = Last Day of Operation in format DDMMMYYYY (same as input format)
J = Departure Time
K = Arrival Time
L = Meal Service

All output format codes are delimited with a "\" character.
Here is an example of an output format string:

"Flight \B\A departs \E at \J and arrives \F at \K; \L will be served"

1. First Report

Attach your program output when executed as follows:

schedule-report --schedule-file schedule.txt --format
"Flight \B\A departs \E at \J and arrives \F at \K; \L will be served"
> schedule-report.txt 2> schedule-errors.txt

2. Second Report

Add an option that will result in only flights that operate on that
date to be output in the report. The --date argument accepts dates in
YYYYMMDD format, where YYYY = 4 digit year, MM = 2 digit month, and
DD = 2 digit day.

Attach your program output when executed as follows:

schedule-report --schedule-file schedule.txt --date 20080926 --format
"Flight \B\A departs \E at \J and arrives \F at \K; \L will be served"
> schedule-report-20080926.txt 2> schedule-errors-20080926.txt

Schedule.txt
 



 

Don't see the perfect job for you?  Sign up for our RSS feed.

 

 

 

 

 
  Contact Us


See all jobs
 

 

Home    |    About    |    Products    |    Technology    |    Careers    |    News & Events    |    Contact

Copyright 2008 - ITA Software    |    Site Map   |    Privacy Policy    |    Acknowledgements   |   Terms of Use