Coleman (Proposal)
Line 26: | Line 26: | ||
An introduction to professional software development using object-oriented techniques. Topics include the use of object-oriented design as a tool for building correct and maintainable software systems, test-driven development, best-practices in object-oriented design and development informed by component-based engineering, advanced object oriented language features, and languages for communicating design. | An introduction to professional software development using object-oriented techniques. Topics include the use of object-oriented design as a tool for building correct and maintainable software systems, test-driven development, best-practices in object-oriented design and development informed by component-based engineering, advanced object oriented language features, and languages for communicating design. | ||
− | + | * Implement object-oriented designs with proper use of interfaces, abstraction an inner classes, exceptions, iterators, and generics. | |
− | + | * Design class hierarchies to meet software-level specifications using object-oriented design principles and appropriate use of polymorphism, encapsulation, and inheritance. | |
− | + | * Design and implement effective test cases. | |
− | + | * Communicate software design using UML. | |
− | + | * Evaluate object-oriented designs using best-practices, support for local reasoning, and metrics of coupling and cohesion. | |
− | + | * Recognize common design idioms and patterns in existing software and use design patterns to aid in the design of new software. | |
CSCI 334 Spring 2013 Description and Course Objectives: | CSCI 334 Spring 2013 Description and Course Objectives: | ||
Line 37: | Line 37: | ||
A project-oriented study of the ideas and techniques required to design and implement a computer-based system. Topics include project organization, design, documentation, and verification. | A project-oriented study of the ideas and techniques required to design and implement a computer-based system. Topics include project organization, design, documentation, and verification. | ||
− | + | * Design large software projects using patterns and other standard techniques. | |
− | + | * Communicate both orally and in writing with clients, colleagues, and supervisors. | |
− | + | * Document specifications and code using standard tools. | |
− | + | * Work in a team to design and develop software projects. | |
== Proposed Approach == | == Proposed Approach == |
Revision as of 20:51, 6 August 2013
Contents |
Contact Information
Ben Coleman (FIXME email captcha)
Matt Lang (FIXME eail captcha)
Mathematics and Computer Science Department
Moravian College
Bethlehem, PA
Overview
At Moravian College, the computer science major contains two courses that focus on software engineering. The first course, taken by students during the second semester of their sophomore year, introduces the main ideas of software engineering. In addition to learning about various processes for software design, students gain hands-on experience working on a team on a large project. We anticipate that these students will make small contributions to OpenMRS through documentation and testing. Work on introductory tickets may be possible, but at their level of development in the curriculum, larger contributions to the codebase would be unlikely.
During the second semester of their senior year students take a second course in software engineering as a capstone experience. Here the students will take a more active role in the project, and they will be expected to make contributions to documentation, testing, and the codebase. Beginning with introductory tickets, we envision students making multiple small contributions to OpenMRS during the semester.
We expect that one-third of the work in the sophomore-level course and two-thirds of the work in capstone course will be focused on OpenMRS. Matt and I, as instructors of the courses, will introduce the students to the relevant technologies and work with them as they learn their way around their first large-scale open source project. In addition, we have scheduled the two courses to meet at the same time to facilitate joint "training sessions" and collaboration between students in both classes.
Course Descriptions and Goals
CSCI 234 Spring 2013 Description and Course Objectives:
An introduction to professional software development using object-oriented techniques. Topics include the use of object-oriented design as a tool for building correct and maintainable software systems, test-driven development, best-practices in object-oriented design and development informed by component-based engineering, advanced object oriented language features, and languages for communicating design.
- Implement object-oriented designs with proper use of interfaces, abstraction an inner classes, exceptions, iterators, and generics.
- Design class hierarchies to meet software-level specifications using object-oriented design principles and appropriate use of polymorphism, encapsulation, and inheritance.
- Design and implement effective test cases.
- Communicate software design using UML.
- Evaluate object-oriented designs using best-practices, support for local reasoning, and metrics of coupling and cohesion.
- Recognize common design idioms and patterns in existing software and use design patterns to aid in the design of new software.
CSCI 334 Spring 2013 Description and Course Objectives:
A project-oriented study of the ideas and techniques required to design and implement a computer-based system. Topics include project organization, design, documentation, and verification.
- Design large software projects using patterns and other standard techniques.
- Communicate both orally and in writing with clients, colleagues, and supervisors.
- Document specifications and code using standard tools.
- Work in a team to design and develop software projects.
Proposed Approach
Both courses are offered in the spring semester, and they are scheduled during the same block of time to facilitate joint class sessions and collaboration between the students in both courses. In general, the seniors will make
We expect that one third of the sophomore level course will focus on Open Source and the OpenMRS For the senior-level course, two thirds of the semester will be spent on the project. The seniors will begin work on the project earlier in the semester
Proposed Activities
- Why should you work on an Open Source project? What do you want to do when you graduate? Why should someone hire you when you graduate? Draft version: Career Planning
- History and Context of Open Source
- Bazaar - History of FOSS - Next Time Fail Better
- Overview of OpenMRS
- Google talk - Getting Started web pages
- Getting up to speed on technologies:
- Git and a github account - OpenMRS ID - Eclipse setup - Scrum - Maven - JIRA - Swing - Hibernate
- How to solve problems: Google, project documentation, IRC log, asking the community. Documentation for future users.
- Learning about the development community
- Attend a weekly developer's meeting - Attend a Daily Scrum meeting - Write journal entry about experiences
- The process to handle a bug. Draft Version: OpenMRS.Ticket