Programming Internship 2015
Note: This internship concluded in September 2015
Our development environment
Depending on which project(s) you work on you will learn and become familiar with some or all of our development environment, which includes:
- Python
- Django framework
- jQuery
- Bootstrap
- Git revision control
- Vagrant
Possible Projects
You will work on at least one project, possibly more if time permits. The time required to complete each project will vary depending on your existing experience therefore our only expectation for each project is that you make positive contributions towards completing the project and learn the processes and best practices associated with software development.
You will be expected to work independently on each project with guidance from our programmer in the form of daily check-ins and pair-programming as needed.
Student Information Database Rewrite
Rewrite a legacy Classic ASP web application using Python/Django. You will work with the programmer to analyze the existing application’s user interface and then follow Django best practices to design and build the new application. You will be expected to learn Python and the Django framework at the start of the project using various online resources that will be made available.
What will I learn
- How to analyze an existing application’s functionality
- The full development lifecycle of a web-based application
- Agile-like development practices
- Python/Django web application development
- Bootstrap for frontend UI development
- Revision control best practices with Git
- Vagrant for ensuring a consistent development environment between programmer
Internet Explorer Browser Extension
Develop a browser extension for Internet Explorer that inserts buttons onto specific pages in a specific web application. When clicked, these buttons will make web service requests and use the results to populate the form inputs on the page.
This is a more advanced project if you are really looking for a challenge that may involve a lot of self-directed trial and error.
What will I learn
- How to analyze an idea for an application and develop a plan for implementation
- The full development lifecycle of an application
- You may need to learn a new language depending on what browser extensions are written in
- Revision control best practices with Git
Checkboxes.js Improvements
We use the open source checkboxes.js library in some of our projects and there are a few fixes/improvements that would make it more valuable to us. You will fork the code on GitHub and implement these fixes/improvements with the intent of contributing them back to the project via pull requests. The fixes/improvements include:
- Ignoring disabled checkboxes when selecting a range of checkboxes
- Preventing the selection of text when shift-selecting multiple checkboxes
- Implementing a proper select/deselect all option
What will I learn
- How to contribute to an open source project
- How to adapt your development style to that of the project you are contributing too
- Analyzing existing code to fix bugs and/or add additional functionality
- jQuery development
- Revision control best practices with Git
- GitHub usage including branching and creating pull requests
Student Filtering Unit Testing
One of our applications is getting new functionality to allow users to filter student information based on 13 different criteria. To ensure that this feature works as expected and delivers accurate results we are using test driven development practices which requires the writing of a large number of unit tests. You will be adding additional tests to the application by picking filtering values and querying the database to determine which students fit those criteria; documenting that information as a Python unit test.
What will I learn
- How to adapt your development style to that of the project you are contributing too
- The concepts behind Test Driven Development
- How to write unit tests in the Django framework
- How to use SQL from the MySQL command line to query the database to determine which students fit a certain set of filtering criteria
- Revision control best practices with Git
Applying
Direct questions or resumes to Paul Rentschler via email.
Penn State is an equal opportunity, affirmative action employer, and is committed to providing employment opportunities to all qualified applicants without regard to race, color, religion, age, sex, sexual orientation, gender identity, national origin, disability or protected veteran status.
Employment with the University will require successful completion of background check(s) in accordance with University policies.