1. Proposal for introducing Python as a First Language At Bryn Mawr College
This is a proposal for switching from Java to Python in the introductory classes at Bryn Mawr College. First, a one-year test would be carried out during the school year 2005-2006. Python would be used in "CS110 Introduction to Computing" in the Fall and subsequently in "CS206 Data Structures" in the Spring. After this one-tear test, we will then decide if the switch is viable, and discuss its merits for the longterm.
Our goal is to keep the best parts of our current design, but to enhance it with the use of Python. Some of the elements that we want to keep from the current design:
1. Motivate students by showing them tools with which they can be creative.
2. Provide a medium with which they can show-off their work with students, friends, and family.
3. Develop concepts and foundation for future computational courses.
Python's strengths as an introductory language:
1. The language allows a simple start, and interactively builds on core ideas and syntax as more sophisticated concepts are introduced. The language "pedagogically scales well".
2. Interactive interpreter allows for intuitive debugging. Allows students to have a closer, hands-on relationship with their code.
3. Very little syntactic over-head. No need to introduce "public static void main" on the first day. Most syntax is also intuitive, once the core is learned (which makes unfamiliar syntax almost "guessable").
1.1. Challenges and Questions
1. Will the students be prepared for courses after CS206?
We should consider teaching Java as part of CS206.
2. Can we continue to provide a medium for showing their work to others?
We should consider using Jython.
3. This will require new materials and homework assignments be developed.
We should consider using John Zelle's Python textbook.
1.2. Conclusion
In developing these new courses, we should keep in mind our overall goals [1]. Python appears to complement these goals very well and should make our program appealing to new students and have a positive impact on computational concepts learned.
[1] Blank, D. and Kumar, D. (2002). Patterns of Curriculum Design. Proceedings of Informatics Curricula, Teaching Methods and best practice (ICTEM), Florianopolis, SC Brazil.
On-line: http://dangermouse.brynmawr.edu/~dblank/papers/BlankKumar.ps
