|Past Meeting Archive||Los Angeles ACM home page||National ACM home page||Click here for More Activities this month|
|Check out the Southern California Tech Calendar|
Regular Meeting of the
Wednesday, October 12, 2005
"An Open Source Culture in the Undergraduate Computer Science Curriculum"
John David N. Dionisio
(Note that this meeting will be on the second Wednesday in October)
Open source software is a burgeoning part of today's computer science landscape, having made inroads into the industry and the mainstream where it was once the esoteric territory of academics and altruists. Software development shops are increasingly viewing experience with open source software as a key advantage for prospective employees; at the same time, most computer science undergraduate students produce toy programs and algorithms, work alone, and find themselves paradoxically out of place when they hit the job market, where team development is the norm.
This talk will describe an NSF-sponsored project at Loyola Marymount University which seeks to integrate the open source culture with a computer science undergraduate education curriculum through an Open Source Teaching Framework (OSTF). OSTF's components --- a set of teaching methods based on open source principles and an accompanying hardware and software infrastructure to support these methods --- will be presented, and examples of how specific undergraduate courses will be modified for OSTF will be discussed.
John David N. Dionisio is Assistant Professor of Computer Science at
Loyola Marymount University, where he has taught since 2002. Prior to that,
he was part of the UCLA Medical Informatics Group and co-founded Medaxis
Corporation, a health care information system startup based in Santa Monica.
He continues to collaborate and consult with both entities in his spare time.
John received his doctorate in Computer Science from UCLA in 1996. His
current open source projects include: Batchboard, a visual Unix scripting
tool for Mac OS X; Shag, a higher-order Swing component library; Razor, a
Java-based medical image viewer library; and openPACS, a framework for
medical imaging referrals and wet reads.
LA ACM Chapter Meeting
LA ACM Chapter October Meeting. Held Wednesday October 12, 2005.
The presentation was "An Open Source Culture in the Undergraduate Computer Science Curriculum" by John David N. Dionisio, Assistant professor of Computer Science at Loyola Marymount University. This was a regular meeting of the Los Angeles Chapter of ACM.
Professor Dionisio is a graphics expert and has developed medical information systems. He has been on a freshly launched course funded by the National Science Foundation on Curriculum and Laboratory Development.
Professor Dionisio said there is an impedance mismatch, a disconnect between undergraduate computer science training and the expectations and skill sets required in industry. Undergraduates usually work alone on toy programs or algorithms and throw away their code after they are finished. Industry works in teams on large, modular projects and the code (for better or worse) may have a very long lifetime. Bad software is not necessarily a death sentence in industry. In the beginning software was produced as scholarly work, freely shared and published in what some call a "golden age". Software in industry became intellectual property, a product of commerce or a trade secret.
The open source culture can be considered as a return to our roots and features new development approaches and practices; better development tools, programming languages, and programming environments. The industrial world features increased software complexity and there have been many cases of decreased software quality. Commercial software remains, and probably won’t go away which Professor Dionisio doesn’t believe is a bad thing in and of itself. Open source software is gaining broader exposure and acceptance (including new business models that embrace it) and can be said to have arrived. There are thousands of people looking at open source software and trying to improve it. There are continuing improvements in software engineering methods, techniques and tools.
So how can we take this to school? The Official Open Source Definition (version 1.9) published by the Open Source Foundation, says there shall be no discrimination against fields of endeavor, licenses shall be distributed, must not be specific to a product and must not restrict other software. The license must be technology-neutral.
At LMU, the Open Source teaching framework specifies adaptation, not adoption and the goal is shifted from industries’ goal of productive software development to learning computer science. The curriculum provides team and individual term-length, focused projects. There is emphasis on concise functionality with unit tests. Students will examine sample code, test existing code, and fix bugs. All source code, by faculty or students — resides in a centralized, public repository. As much as possible, everyone’s code is visible to everyone else — sometimes in the classroom, for code review or team fixing. No code is thrown away — it remains available to future "generations". Quality is made easier to attain by inline and online documentation, automated tests, constructive code and a review give and take with collaborative communities among faculty, students, classes and projects. The process provides certain rights and requires responsibilities. Credit must be given where credit is due and people must follow appropriate access and authorization rules even though the code is open. They must acknowledge, understand, and respect privacy, confidentiality, and license provisions and be ethical. Faculty members maintain live organized, searchable, student-accessible sample libraries for their course. Students access the sample code using the same tools and processes that they would encounter outside the educational environment, there are no instructor handouts. This should be a built in notion of the students, to develop working skills and techniques that they will be using in the future.
There are "Derived Works", exercises that involve extending existing code. Student programming projects live beyond the original term and course. There is a focus on existing code and not on newly produced throwaway fragments. Students add and improve unit tests, find and fix bugs, and improve and refactor designs. In a typical sequence, the instructor specifies required functionality and the students submit unit tests. The instructor runs their tests against a library of previous implementations — some good, some bad, to see how their unit test perform. Then the students submit their own code for the instructor specified function and the students' unit tests are run against each other's code. Ground rules for student code releases are to release early, release often, and make their code releases open to everyone. For courses with term-long individual programming projects there are project milestones throughout the term with in-class code review and code sharing for common functions. Projects feed back their results and code to lower division work as examples to the less experienced students.
A hardware + software infrastructure for supporting the teaching framework called "CourseForge" is under development as certain teaching elements are impractical without some degree of automation. It is derived from open source software, and will be delivered as open source software — the system will use itself as parts of the system are implemented. There will be a department-wide source code repository. The organization will be multifaceted organization covering faculty, students, courses, projects, homework and research. It will use tags, versions, and branches and provide a release mechanism for "official" submissions. There will be read-only versions available for viewing over the Web. There will be provision for automated testing and reporting using scripted actions upon source code submission that are configurable per instructor, project, course, or assignment. There will be Web and e-mail feedback summary/reports for instructors, team leaders and individual students. There is a goal to build, test, and run against multiple architectures and operating systems; isolate specific build fixtures for particular software requirements for things like computer graphics and database management systems. Comprehensive build reports will be provided periodically.
There is an online parallel structure of source code repository with appropriate authorizations and integrated links to other Web-accessible information including source code repository, test and build reports, blogs, and community forums. There are several tiers, ranging from individuals to groups and projects that can be reached through searchable archives and contact by email.
There has been an actual exercise in a programming languages course this semester at LMU. It was done manually, there is no automated "CourseForge" available yet as it is a work in progress with more results to come. The assignment was to use JavaCC to implement a parser for a simple language. The assignment included providing a test suite for the parser that would accept strings that belong to the language and reject strings that don’t. The tests should differentiate between lexical and syntactic errors in "bad" strings. The initial "Test Shakedown" was run against the instructor's "control" implementation. This should eventually include more than one implementation, both correct and incorrect, for educational purposes. Four test suite errors were caught. The errors usually occurred because of a student misunderstanding of the requirements of the test. Finally, all of the student's parsers were run against all of their tests. Professor Dionisio presented charts of the test results and discussed the results in detail. None of the tests, including the test of the instructor, caught all of the errors which was a very interesting result. As they ran the test they fixed the code and at the end everyone's parser met everyone’s test.
The findings were that precision is a key as there is a need to ensure a consistent understanding of what is required. This parallels requirements analysis in software development. Tests must cover both commission and omission errors. Tests must be very fine-grained — otherwise a failed test may mask additional failures.
Students found the course to be more enjoyable overall than a conventional programming assignment. There was increased motivation to get things right and satisfaction with working as a team to get everyone's code to "go green". Under consideration for improving the course is improving grading and student assessment, and providing working code with comprehensive tests and full team participation. There is a need for licenses for student projects, particularly after they have graduated, as the results may be replicated at other institutions to insure proper credit is provided.
In conclusion; Adaptation of an open source culture at the curriculum level may improve undergraduate computer science education providing better computer scientists who have a better match with industry expectations. The computer scientists should have increased individual satisfaction, a sense of accomplishment, and have more of a real-world impact.
Professor Dionisio presented a well prepared and interesting talk. He used numerous charts and provided comments and explanatory information that expanded on the displayed information rather than repeating it. (A set of his charts can be viewed by clicking here.) His presentation provided an excellent example of how good Computer Science education in the area of software development should be done. He presented a considerable amount of information very clearly in a relatively short period of time. This summary leans heavily on the material presented on the charts and does not do justice to the richness of the additional details Professor Dionisio provided.
This was another of the regularly scheduled meetings of the Los Angeles Chapter of ACM. Our next regular meeting will be held in December 2005. There will be no regular meeting in November, but a 3 evening Professional Development Seminar on XML will be held on the evenings of November 8, 10 and 15, 2005 at Loyola Marymount University. Check this web site for further announcement.
This was second meeting of the LA Chapter year and was attended by about 17 persons.
|There will be no chapter meeting in November. Join us for a Professional Development Seminar to be held over three nights 11/08, 11/10, and 11/15.||
This month's meeting will be held at Loyola Marymount University, University Hall, Room 1767 (Executive Dining Room), One LMU Dr., Los Angeles, CA 90045-2659 (310) 338-2700.
Directions to LMU & the Meeting Location:
From the San Diego (405) Freeway:
- From the South: Travel on 405 North, exit on Jefferson Blvd., and turn left. Head west and make a left onto Lincoln Blvd. Head south and turn left into the campus on LMU Drive. You can get a parking pass from the guard at the front gate.
- From the North: Travel on 405 South, exit on Jefferson Blvd., and turn right. Head west and make a left onto Lincoln Blvd. Head south and turn left into the campus on LMU Drive. You can get a parking pass from the guard at the front gate.
- Park in Lot P2 or P3 of University Hall. (UHall is the first building on the right after the guard station.)
Dinner will be in the Faculty Dining Room, UHall 1767: To get to the Roski Dining Hall, where you may purchase your food, take one of the elevators in the bay at the west end of the parking structure to the Lobby level. Exit the elevators, then walk straight ahead through the glass doors and into the atrium. Turn right. The entrance to the cafeteria is on the right before you reach the cafeteria seating area at the west end of the atrium. (The cafeteria entrance is room 1700 according to the building floor plan).
To enter the Faculty Dining Room from the cafeteria:
After paying for your food, head back to the area between the grill and the sandwich bar. Turn toward the exterior windows (north side of the room), and walk toward the windows. Before you reach the windows, there will be an opening on the east side of the room, which leads to a hall along the exterior north wall of UHall. Walk down the hall until you come to the faculty dining room. Alternatively, leave the dining area through the doors on the south side of the dining area and walk east (left) through the lobby until you reach the Executive Conference Center (ECC). Enter the double glass doors to the ECC, continue straight down the hall to the end, then turn left and you will be in the faculty dining room.
The meeting will also be in the Faculty Dining Room, UHall 1767. From parking Lot P2 or P3 under University Hall, take one of the elevators in the bay at the center of the parking structure to the Lobby level of University Hall. When you exit the doors into the atrium, the next set of doors a short distance to your right says ECC Center. Enter those doors and walk straight down the hallway. Room 1767 is on your left hand side.
The Schedule for this Meeting is
5:00 p.m. Networking/Food
6:00 p.m. Program
7:30 p.m. Council Meeting
9:30 p.m. Adjourn
No resevations are required for this meeting. You are welcome to join us for a no host dinner in Room 1767. Food can be bought in the Cafeteria. Look for the ACM Banner.
If you have any questions about the meeting, call Mike Walsh at (818)785-5056, or send email to Mike Walsh .
For membership information, contact Mike Walsh, (818)785-5056 or follow this link.
Other Affiliated groups
SIGAda SIGCHI SIGGRAPH SIGPLAN
Return to "More"
Please visit our website for meeting dates, and news of upcoming events.
For further details contact the SIGPHONE at (310) 288-1148 or at Los_Angeles_Chapter@siggraph.org, or www.siggraph.org/chapters/los_angeles
Return to "More"
Past Meeting Archive Los Angeles ACM home page National ACM home page Top
Last revision: 2005 1018 [Webmaster]