The general purpose of an IDE (Integrated Development Environment) is to provide a single application with support for everything a programmer may want to do. This includes editing source code, interpreting/compiling code and running it, and debugging programs. IDE’s you may be familiar with include Eclipse, Netbeans, Visual Studio, Idle, and many others. Theoretically an IDE should help its user develop programs more efficiently, however the reality is that the learning curve for many IDE’s is high. Even an experienced programmer often cannot simply download a new IDE and quickly write/run a basic program (say the classic “Hello World”) without a hassle. This creates an immediate deterrent to introducing new programmers to IDE’s, and few intro students at Carleton use one. In fact many CS majors never end up using an IDE and many that do neglect one of the most useful features – the debugger.
Debugging code can be one of the most frustrating aspects of computer programming. You’ve thought up a great efficient algorithm to solve a problem, you’ve written the code, and you’ve even designed several test cases to ensure that the algorithm implementation works as expected. Then when you actually go to run a test case your program just “hangs”, or it runs correctly the first 3 times but gives strange (and incorrect) results the fourth. What do you do? If you’re like many students you add print statements. Lots of print statements. Sometimes you get lucky and quickly find the problem. Other times you end up with hundreds of pages of output that is too complex to parse and you spend hours of frustration only to finally realize that you reversed your i’s and j’s in a set of loops. Using a good debugger can be extremely helpful in finding these logic errors!
The goal of this project is to design and implement a Python IDE that is intuitive and friendly to new programmers in order to get them started using tools like a debugger early. The basic components of any IDE are a text editor, build automation tools (compiler, interpreter), and a debugger. You won’t be implementing all of the components from scratch, but will design and implement the integration of existing tools, as well as adding Python specific features to each. The possible features you could include in a Python IDE are endless, but the initial focus will be on implementing the following basic functionality in a clear and easy to use interface: