This is a lower level elective; it will have 10-20 participants, all undergraduates. The only pre-requisite is a CS intro course (CS1). It will be taken by students who have really taken nothing but the intro course and would like to take some more CS without having to go into data structures straight away as well as by more advanced CS students who are simply interested in the topic. My goal is to give the students an understanding of what NLP is, why it is hard, and some fundamental algorithms used in NLP.Software: I am using a software toolkit called NLTK (natural language toolkit; http://www.nltk.org) in this class. It is the most widely used software package in NLP education and it is open source. The package is a wonderful teaching aid and flexible enough to let the students explore quite sophisticated research questions, but it is not equally well developed in all areas of NLP. Specifically, it is lacking in natural language generation and dialog systems, which are my research areas.

Idea: In this class, I would like to teach the students about NLP and introduce them to NLTK using the areas that are well developed in NLTK. I would like to then introduce them to state-of-the-art models of natural language generation and dialog systems and have them contribute implementations of these models to NLTK and teaching material to go with the implementations.

Challenges:

As I said above, the only pre-requisite for this course is a CS intro course. So, not all students will be able to contribute code. I will have to make sure that no students feel left out and that all feel that they were able to contribute meaningfully, no matter what their CS background is. Right now my idea is that the students with more programming experience may focus more on the implementation, while the others focus more on the accompanying documentation and teaching material.

This is not a software engineering course. If the students learn some open source development practices along the way, that is great, but it is not the focus of the course. I will have to make sure that the main objectives of the course, i.e. learning about natural language processing, are reached.

Flash forward to Summer 2012...
I have taught the NLP course, and all students have an understanding of the kinds of questions that are asked in NLP research and the kinds of things that make NLP hard. They also have some hands on experience with approaches to answering these questions and tackling the issues that make NLP hard because they have all worked with the NLTK toolkit. They know that NLTK is a FOSS project and they have an understanding of what that means. All students have contributed to the project in some way. Some students have contributed code addressing natural language generation and dialog systems. A particularly enthusiastic group of students, will continue to work on this as an independent study during the fall term. In the meantime, I am promoting their contributions to colleagues who have been looking for good teaching material for natural language generation and dialog systems. They promise to use the material in their next NLP courses and to give us feedback.

What needs to happen in the meantime?

I have to do some more thinking on the questions that I have listed above under ""Challenges." Discussions with other educators and people who experience contributing to FOSS as part of a class is also going to be helpful. I also have to have a closer look at nltk.org. I have used it for teaching, but I have not looked at it from the point of view of a contributor. I will have to figure out what the processes are that they use, and what their policies are for including new contributions.

Beloit College is an undergraduate, residential, liberal arts college with 1275 students. Two important attributes of Beloit College is its commitment to experiential and international education (almost 50% of our students spend at least one semester abroad). We have students from over 40 states and about 10% are international. We have a strong tradition of doing service work at the local, national and international levels.

As such, I think a project in HFOSS might be of particular interest but I want our students who are great at looking into opportunities to help choose what FOSS project to do. (I plan to begin that discussion in April when course registration will be complete. This should allow for better planning over the summer.) We have good students who are used to working through problems, working in teams, and getting their work done. Our students are used to small classes with lots of contact with professors. Two years ago we moved into our new science center. At that time the CS program was able to have a new advanced lab with curved tables for group work and very nice equipment. It is slowly becoming the place where the CS students hang out to do school work but also work on other things that just interest them in CS.

I am targeting our capstone course to be integrated into FOSS. Every CS major is required to take this course for three semesters but are encouraged to take it every semester during their final two years (exceptions are for students studying abroad, etc.). This version of the course is new as of fall of 2009. I will be teaching it for the first time in 2011/2012 (I was away on sabbatical in 2009/2010). We expect 10-12 students for both semesters. The catalog description is:In this developmental course, students learn from one another as well as from the instructor. Students work in teams to enhance an ongoing software project through design, implementation, testing, and documentation; teams regularly present ideas, progress reports, and designs. Programming is done in pairs, pairing a more experienced student with a less experienced student. Students learn current design and programming tools and give presentations on topics of current professional interest, including ethical considerations. Computer Science majors are expected to take this course each semester in which they are in residence during their junior and senior years.

The current instructor uses a larger software project of personal interest as the basis for this class. The CS program agrees that this course is hands-on where students learn by doing a project. It is more about the experience and what they learn than the readings and information we provide. A few CS students also did a research project involving FOSS this year. I had a student who worked on accessibility issues in GNOME and one who is trying to start a new OSS project to allow high schools to do sports team management with a web presence. The students are driving this work and I have not been deeply involved in the details of the OSS work. I plan to continue this type of OSS work in the future.

Flash forward to Summer 2012...

Hey old friend!

It has been an interesting year. I have always said I would leave academics if I became bored or no longer looked forward to working with my students. This year was a great bounce to my enthusiasm since my return from sabbatical. My students did real-world projects that made a difference in the world.

Looking back, I am struck by several things.The students are now confident in their abilities as contributors to the OSS community. They are justifiably proud of the work they did and how it made a difference. They came to Beloit College to make a difference in their lives and the lives of others and this class was one of the highlights in making that happen. They are how looking back to realize this class took all the hard work from their other courses and made it real (they also grin when they joke about the hard work done this year).

They talk about how it came off the pages of all the textbooks to live for them. They also laugh when we they think back about how scared they were to send notes to FOSS project members that they now chat with easily. It is great to see them excited about all the skills they gained: new tools, new programming languages, working with a team outside the students they know, understanding project dynamics, and working with many different types of people who run FOSS projects. Best of all, several students are going to work on FOSS projects this summer because it was so great for them.I'm also loving the change in the culture of our students. They are bonded together and are proud to be in CS. They hang out at night in the lab to accomplish tasks together.. They brag to their friends about what they did. They even put together a kiosk in our hallway so everyone can see the work they did on a FOSS project. I even overhead a first year student saying they were thinking of taking a CS course because they heard what some others had been able to do with their CS skills.

Just so you know I don't have a perfect job, I still have to grade exams and go to academic senate. Write soon and let me know how things are going with you.

What needs to happen in the meantime?

During the workshop I hope to continue my re-entry into Linux. I also want to understand the FOSS techniques so I can help my students be successful in their projects in FOSS. While I have set up a test LAMP server with subversion this year, we need to get this on reasonable hardware and include everything needed for FOSS development (for example, we probably want Git, etc.) The POSSE workshop will help with this along with getting into the FOSS development culture.

Since the course begins at the end of August, I will need to set up the hardware quickly after the POSSE. I hope to use part of the Red Hat money to buy a modest machine for this purpose.

Another important aspect of the POSSE experience will be connecting to FOSS people and projects. I suspect it would be best to enter a project where others have worked and possibly have a mentor of someone who did POSSE or extensive FOSS work. This would give me someone to get help from on the educational aspects of using FOSS the first time. If mentors will be available, it might be best to pair after we have some idea(s) on likely projects but a general one would also be fine. Another area that would be very helpful would be in bouncing ideas off a knowledgeable person on possible projects. It seems especially helpful if you can start with a project that works well.

In the longer term I would be thrilled if the students do something that they can to take to a meeting to discuss. This is another potential use of the funds from Red Hat.

Any other notes?

I joined TOS about two years ago. I wanted to do a POSSE sooner to begin using FOSS but was away on sabbatical in the previous year so missed the first two. I heard about POSSEs on the TOS list and can finally participate."

Georgia Gwinnett College (http://www.ggc.edu) is a 4-year public institution founded in 2005. We offer B.S. in Information Technology with a concentration in either Software Development, Systems & Security, or Business (http://www.ggc.edu/academics/school-of-science-and-technology/academics/information-technology). We have experienced extremely rapid growth, moving from fewer than 150 to now having over 5,800. There are 24 full-time IT faculty from diverse academic and professional backgrounds. Many (like myself) have extensive industry experience as well as a Ph.D. There are no department heads at our school, so we have a collaborative decision making model. As a new school, there is more than enough service work to go around, and there are definitely research expectations. However, faculty are primarily evaluated on teaching and student engagement. There’s no tenure available to any faculty members, but faculty can apply for promotion with the traditional academic ranks if they meet the qualifications.

This academic year, we started a student chapter of Association for Information Technology Professionals (AITP), and our students will compete for the first time in the National Collegiate Competition in programming and database. GGC also hosted GiveCamp Atlanta in January 2011 (http://givecampatlanta.org/). GGC has also sponsored Tech Talk – a technical enrichment series for the entire GGC community (http://wiki.ggc.edu/mediawiki/index.php/Tech_Talk).

About the Course:

Software Development I is a Junior-level course required for students in our IT-Software Development concentration and an elective for students in our other concentrations. This is the first in the Software Development series. The other courses include:

ITEC 3870 Software Development II

ITEC 4260 Software Quality Assurance and Testing

ITEC 4860 Software Development Project (capstone course)

Students come to the course after taking 2 semesters of Java programming, so they know the basics of how to develop relatively small programs as individuals when given a specific set of requirements. What they lack, though, is a perspective on the challenges involved when creating and maintaining larger applications for a client in a team environment. My approach to the course is shaped by my experiences working as a software engineer. I see software engineering as a project-based team activity designed to solve a problem for the client. I try to impress upon them that programming skills alone are not enough to be a successful engineer; therefore, I create course activities that help students grow their technical, presentation, writing, and personal networking skills. I stress ideas like maintainability, reusability, and design. I always try to incorporate interaction with industry so that they can relate the topics we discuss in class to the “real world”.

Feature enhancement (GroupUp): Students were initially assigned simple defects to correct on the GroupUp application (first designed by students in Fall 2009 class). They were then given a more extensive feature enhancement to complete in the code. They worked independently on implementing and unit testing their feature. They then performed integration testing. Students demonstrated the product to client during class.

Sage Field Trip: We took a field trip to Sage to learn more about their software development process and some of the tools they use for quality assurance.

Independent reading project: The final project was for the students to independently read a significant portion of a software engineering book, write a reflection piece, report to the class, and provide a demonstration.

Design patterns: Independent study and presentation to the class

Article summary: Independent reading and presentation on an article from a scholarly magazine such as IEEE Software or IT Professional.

Final Project – Mentor Assignment Case Study: Working as a team, students created a design (use cases, class diagrams) for a case study that I created.

This course is offered every Fall and Spring semester. The number of students taking the course has gradually increased as our college as grown, and we have begun advertising that this course could be a good elective for other IT concentrations. In Spring 2011, we had our largest class to date with 12 students taking the course. Course wiki page has a bit more information: http://wiki.ggc.edu/mediawiki/index.php/ITEC3860

Flash forward to Summer 2012...

My Software Development I class has been transformed! Students have always liked the real-world project part of the course. But through the collaboration with Red Hat, we were able to work with an external client and have an industry mentor. The students designed and developed a simple application that worked. This has worked wonders for the motivation of the students in the class. They were always interested in the topic, but this level of authentic learning inspired them to spend more time on the coursework than I had seen in the past. They were able to see first-hand the value of the concepts that before seemed just “academic”.

In addition, I have grown tremendously as a professor – both in terms of technical skills and awareness of open source development. I’m already planning to update my approach to my introductory programming class to incorporate some of the strategies I learned. I continue to get rave reviews on the Tech Talk presented by guests from Red Hat based on POSSE modules.

More importantly, students continued to apply the skills from the course after the class ended:

Over 50% of the students participated in Give Camp as developers, volunteering their time to enhance or create web sites for community organizations.

Several students successfully competed at the National Collegiate Competition and won first place!

Students presented their work at the annual GGC Student Research Expo as well as a local undergraduate research conference

Working on this project was instrumental in many of the students obtaining summer internships working at local companies.

The professor for Software Development II has mentioned that they are much better prepared to tackle the projects and assignments in that class as a result.

What needs to happen in the meantime?

Workshop needs:

I need to know tools for getting started that don’t require the school to buy or configure anything. The POSSE 0017 elective is very intriguing.

I need an idea of what technologies I should learn and introduce to my students before they can truly be productive contributors in an open source project. Most of them just know the Java they’ve been taught in school. Some may have a database background – but it’s not a required pre-requisite. What are the best tutorials or teaching resources that I can point to?

Since there are truly so many options out there, it would be good to leave the workshop having identified 1-2 projects that we can work on.

Would like:

Advice on outlets for students to present their work at conferences

Advice for how students can develop a portfolio of their work to help them market themselves for internships and future jobs

Opportunity for GGC students going through this experience to network with other POSSE students going through a similar experience (maybe at a conference or other open source event)

Assistance coordinating a “field trip” or job shadowing experience for students during the academic year

CS 193 First Year Seminar: It's an Open Source World! and CS 401 Software Development

Fall 2011 for CS 193, Spring 2012 for CS 401

The course now:

About the university

Worcester State University is a medium-sized (~5000 student), urban university. Many of our students are first-generation college students, most are commuters, and most work while attending school. Because of these factors, they tend to spend less time on their coursework outside of class hours than we would like, and they are less connected to their classmates. We have a high teaching load - 4 courses per semester, and a small department - only 4 faculty in the CS Department.

CS 193 First Year Seminar: It's an Open Source World!

This course has never been taught before.

First Year Seminar for 20 incoming freshmen of all majors.

"The First-Year Experience Program at WSU is designed to achieve the following broad program goals:

First-year seminars at Worcester State University are academic seminars on varied topics. By definition, a seminar is a small, discussion-based course in which students and instructors exchange ideas and information. Strong emphasis is often placed on creating community within the classroom. First-year seminars introduce students to college-level learning and facilitate student transition from high school to college. They differ from the traditional, lecture-based, introductory course. Strong emphasis is placed on creating a community of learners. FYSs offer the opportunity for students to learn from one another, to explore new ideas, to learn about oneself and one’s abilities, and to get to know a professor well in a small classroom setting. FYSs encourage active, reflective learning, and enhance students’ critical thinking, information literacy, and written and oral communication skills.

First-year seminar topics should engage first-year students. Optimal subjects are those that

motivate intellectual inquiry and growth,

encourage personal and social exploration, and

lead students to question and understand the workings of society and their communities."

Student Learning Outcomes for the First Year Seminar:

Students will demonstrate effective written and oral communication.

Students will apply skills in critical thinking.

Students will apply skills in information literacy.

I intend for this course to fit the Worcester State University Fall 2011 Theme Semester theme: “Worcester in the World”; its mission statement is as follows:

"In the current era social problems are increasingly defined in global terms. Threats to health, political stability, and the environment can best be understood as arising within a world that is increasingly integrated in terms of trade, communication, and transportation.

This complex interconnectedness also allows expanded opportunities for positive social change through increased democratization, economic opportunity, and conflict resolution.

Worcester in the World will explore the ways in which globalization is presenting new problems and opportunities, and will emphasize that the “global” cannot be understood without reference to the “local.” As communities are affected by globalization, so too they respond, resist, and contribute to it, in a mutually reinforcing cycle.

These complex processes require a deep and multidisciplinary analysis. Thus, Worcester in the World will involve students, faculty, administrators, staff, and the larger community joining together to investigate the problems and opportunities inherent in globalization."

CS 401 Software Development

Capstone Experience for up to 24 junior/senior CS Majors

When this course was last taught in Fall 2010 the class consisted of 5 groups of 4 students each.
Each group looked for their own open source project, investigated the projects they had identified, and tried to make contacts within the project, to varying degrees of success. Once students had identified a project, they tried to identify a bug or feature to implement. They worked on learning how to check out the source, install the environment, and build the code.

We had 1 three-hour class meeting per week. The intention was to have the first portion of class be the introduction of new material, but I rarely did this. I did not have a clear enough plan as to what I should cover. I need to develop more "exercises" to give them practice with the tools and processes of working within a project. In second portion of class, each group made a weekly status presentation to the class. Other groups did not find these interesting, probably because they were not obviously related to their own projects. I am considering having them all work in one project to try and solve this lack of interest in the other teams' work. In the third portion of class, I met with each group individually, to get a sense of where they were, what was currently blocking them, and what they needed to do next. These meetings were probably the most useful portion of the class, both for me and for the students.

The groups did not document their status on the wiki very well. Many times, the only documentation of their progress was my notes from my weekly meeting with them. The groups all made some accomplishments, but how much varied significantly from group to group, likely dependent on the project they had chosen. Not all groups contributed their accomplishment back to the community.

A few weeks into the semester, I realized that I had to provide a svn server and a git server for the groups to keep their group copy of the code on. I spent a couple of days frantically reading manuals on svn and git, and got them installed. The students were able to learn the rudiments of svn and git, but never really understood some of the advantages. For example, one group didn't figure out that they needed to check out a particular version of the code to use the line number in the stack trace in a bug report. They couldn't figure out why the stack trace would refer to a comment line, until I explained it to them.

In summary, I need more preparation, materials, and assignments to make this course what I want it to be for the students.

Flash forward to summer 2012...

CS 193 First Year Seminar: It's an Open Source World!

We spent an exciting semester exploring the open source movement/phenomenon. We read about and discussed people coming together to create and organize in ways that were not possible before the existence of the Internet, creating, sharing, and remixing content. We read about and discussed the open source movement, its motivations, policy issues, manifestos, licensing issues, and the idea of the commons. We discussed the positives and negatives of the open source movement. The students participated in an open source project - some wrote documentation, some worked on marketing, and some students with programming experience from high school even wrote some code. We had a few guest speakers, some from the open source community, and others from our own Sociology Department (discussing social networks) and our own Business Department (discussion organizational dynamics.) The students and I have gotten to know each other, they have found that they are capable of doing more than they thought they could, and some of them are going to continue to contribute to the community.

CS 401 Software Development - Capstone Experience for CS Majors

We spent a productive semester learning the tools and processes of the open source community. The students got to know members of the project we worked on, and made some significant contributions. The students now have a feel for working in a large codebase, with a distributed and diverse team, and what benefits and problems those can bring. They are competent in using version control, bug tracking, debugging, and documentation tools. They came together in the class as a single large team, and in their subgroups, and everyone contributed. I was able to step back and let them run the show, but I was always there to make suggestions, and to help them navigate unfamiliar territory when they had difficulties. We had some speakers from the open source community, as well as from industry and from our alumni, to put the skill they were learning in context. They spent much more time than they expected, but they also learned much more than they expected. The feel confident in their skills, and ready to go out and work on another software development team, and to teach themselves any new tools or techniques that are needed in their future careers. Many of the students plan to continue to contribute to the open source community, perhaps in other projects that are more to their own personal tastes. but they feel they will be able to successfully join the community. We have set up a blog planet so that the students can showcase their work, and show off the department. Some of the students have decided that this is something that students should get involved with earlier, and are starting an open source club, so that they can help underclassmen get started.

What needs to happen in the meantime?

CS 193

Lists of readings about open source movement.

Speakers from open source community.

Suggestions for projects to look at, to have students work in, contacts in projects.

Suggestions for writing and research/writing assignments.

Suggestions for tools to teach them. Wikis for sure. What else?

Questions: Should we all be working in a single project, or should I have them identify a project that they feel a connection with? Should we all be trying to work on the same type of contribution, or should we target their individual interests and strengths?

Speakers from open source community. Maybe some of our alumni who have contributed to open source.

Suggestions for projects to look at, to have students work in, contacts in projects.

Discussions about whether to put all the students in a single project.

Ideas on deliverables, grading and assessment.

How to assign students to groups.

Blog planet, so that students can report on their activity, and so that we can publicize what students are doing, and track their continuing participation. I think I would rather install that on a server on our campus.

The journalism program at RIT is one of the newest degrees on campus. Launched in 2009, we have over 30 majors and over 100 minors. These numbers surprise some who believe journalism is in decline. Indeed journalism is changing, but it is hardly in decline. New news platforms and modes of interactivity arguably require more expertise than ever before. At RIT we believe that our students can be leaders and pioneers in the field. Specifically, the programmer/journalist (or the journalist who knows just enough programming to be dangerous) is a hot commodity in newsrooms. RIT is looking to make a mark in producing these types of graduates because our school already excels in computing sciences.

To this end, I would like to incorporate open source in my Newswriting I class (syllabus attached Note from Mel: We'll see if we can upload this somewhere.). Newswriting I is the introductory writing course taken by majors and nonmajors across the university. The class is capped at 24, and meets in a computer lab. Typically students who believe they are good writers take this class. They soon learn that Newswriting requires a crisp, balanced, technical style – usually the antithesis of what they learned in high school.

I believe that having the students write about/learn about open source is an excellent project on three accounts.

First, it challenges them to write about something technical in a user-friendly way. Truly some of my students are in journalism to avoid math and science, which makes this assignment all the more challenging and beneficial. In Summer 2009 I experimented with open source and had my Newswriting students visit RIT’s POSSE and write stories. This turned out great. You can see the leads (or intros) of the students’ stories attached. Note from Mel: We'll see if we can upload this somewhere as well.

This year, I would like to repeat the assignment but also to require students to post their stories in an open source community. This ups the ante by making their work public. Also, it allows them to add a real-published piece to their portfolio – win #2.

Another new layer I would like to add is to invite public relations professors to have an open source assignment which would require their students to write about POSSE. The press releases they write could be handed over to my students. This would give my students direct experience working with press releases, something they have to know how to do.

Finally, working on an open source project exposes my students to the open source community. I hope they will be encouraged to pursue other courses in CS, and maybe even CS minors. Right now I do not believe there is as much integration between liberal arts and CS as there could and probably should be. Different programs have different sensibilities that together can foster innovation and creativity. I wonder too if there isn’t a model for producing journalism that already exists in a different form in the open source community.

In case you were wondering, I won’t mind at all if I’m the only non-techie in the room. I like a challenge and I see this event as a good opportunity for me and my students.

Flash forward to summer 2012...

The 2011-2012 academic year was a banner year. All of my students had at least one piece of their work published. All of them had something published in the open source community and some of them continue to build their portfolios by writing about open source.

Based on what they’ve learned, some of the students are taking computer science electives. The computer science types in my class are pursuing journalism minors. This makes me closer to my dream of creating a “News Application Laboratory,” where CS and journalism students collaborate on interactive storytelling. My own “expertise” in CS is deepening such that I’ve gained the confidence I need to teach a cross-listed course between CS and journalism.

Through my course’s collaboration with open source, RIT is gaining recognition as a place to recruit and train computer-science-minded journalists. Furthermore, I am concluding some academic papers on the intersection of journalism and open source that I will present in 2012 at a few academic conferences.

What needs to happen in the meantime?

How do I get from here to there?

First, I need the buy in from my department. I’ve already spoken with the current chair who is supportive of my attendance at POSSE, although the travel money situation isn’t cleared up. A letter from Red Hat would probably help with that.

Second, I need to approach the public relations professors about partnering with my classes. I do not anticipate this to be a problem.

Third, I need to make sure and figure out how my students can have access to the people they need to to write their stories. Maybe we could arrange a skype interviews for the class with some key players? Other people would need to be willing to talk about their projects with individual students.

Fourth, I need to have a better grasp of open source publishing. I have a pretty good sense of where students can publish work, but I need some help with this.

Fifth, I need to beef up my CS basics. Can you recommend some good intro textbooks for me?

Sixth, I would be interested in possibly bringing in a big-name journalist with a CS background or who writes about CS stuff to campus to talk to my students. Perhaps you could give me some suggestions?

Other notes

I have some great colleagues across campus who dabble in open source. Through them I heard about and attended POSSE at RIT last year. I also attended a seminar at the Poynter Institute (a journalism training place) called "Programming for Journalists/Journalism for Programmers" in August 2010.

The course is a required core course in the Computer Information Systems (CIS) program at University of New Hampshire (UNH). The CIS program is an undergraduate program in the Division of Science and Technology, which also includes B.A. Biological Sciencees, B.S. Mechanical Engineering Technology, B.S. Electical Engineering Technology, and B.S. EET Computer Technology concentration programs. The division is housed by the UNH Manchester (http://unhm.unh.edu/about-us/index.php), one of the six colleges of the University and the only one on the urban campus in Manchester - the other five colleges are on the main campus in Durham, including the College of Engineering and Physical Sciences that houses the Computer Science Department. UNH Manchester has around 900 undergraduate students. The Durham campus has more than 9,000.

Why explaining where CIS resides is important? Because UNH Manchester is a commuter college (and not residential as the other colleges in Durham), with a more diverse student population (when compared to students in Durham), and with small programs of 2 to 3 residential, tenure-track and tenured faculty, whose typical teaching load is three courses per semester. The large majority of UNH Manchester students attend school full-time while working, on average, more than 20 hours per week.
Two-thirds of the UNH Manchester students receive financial aid. On average, UNH Manchester students are three or more years older than traditional-age students.

The Academic Program

The CIS program was launched six years ago and currently has around 70 majors. An increasing number of the majors are transfer students from local community colleges or elsewhere (whether they have an associate's degree or just a number of transferred credits). The program's curriculum is aligned with the ACM Information Technology Model Curriculum (http://www.acm.org//education/curricula/IT2008%20Curriculum.pdf), and includes introductory and core courses in programming, operating system applications, databases, web development, networking, human-computer interaction, computer law and ethics, system and network administration, server virtualization, advanced application programming, and, what we call integrative and professional experience courses, such as information security, object-oriented software development, internship, and capstone project (all required). Students are also required to take four courses in a self-designed concentration, which is in a different domain, whether liberal arts, sciences, or interdisciplinary (which also covers a professional focus).

The Course - Student Demographics

I taught Advanced Web Authoring for the first time in Fall 2010. The course enrolled 22 students: three females (14% - lower than the reported 18% females of the 2008 computer and information sciences undergraduate recipients); two minority students (9% - slightly more than 7.2% minorities of the state's population in 2009 and slightly less than the 11% minorities of the metro area's population in the state); seven transfer students; four veterans; and two non-CIS majors (a male Business major and a female Communication Arts major with a minor in CIS). The breakdown by year of study was: two sophomores, eleven juniors, and nine seniors.

Use open source collaborative software and content management tools to develop web applications

Communicate timely and work in teams effectively

Argue for the use of open source software tools and adoption of open source collaboration practices.

The course learning outcomes are assessed by measuring student performance in two exams (40%), eight weekly homework assignments (24%), a team project with four iterations (24$), and in- and outside class participation (12%). Students and instructor are the evaluators of student performance. The instructor grades the exams and student participation and project status reports, totaling 66% of the final grade. Students self-evaluate their homework assignments and submission of peer reviews (28%) and have their contribution to the last two project iterations evaluated by peers on other teams (6%). All assessors (self, peer, instructor) use rubrics for their evaluations.

Flash forward to Summer 2012...

In a long-term future, students and faculty across academic programs at the University use open source collaboration:

in their classes to improve teaching and learning,

with external partners to solve problems that benefit communities,

with fellow researchers, whether undergraduate and graduate students, other faculty, or industry professionals, who are intrigued by interdisciplinary big questions, and

with K-12 students and teachers to improve STEM education.

The short-term future takes place a year after I have taught my Advanced Web Authoring class, in which I have applied the wonderful things I learned and practiced myself at the 2-day workshop at Red Hat Headquarters in summer 2011, and have used the POSSE 2011 Cohort Program funding to offer my student new learning opportunities.

Where are my students now? They use version control for any project, whether it's an individual or team project in any of their computing courses. Project documentation, both software development artifacts and project management outcomes (meeting agendas and minutes, and other planning notes) are inevitably chronicled in wikis. Outside class time buzzes with posts on the class mailing list.

At night, many of the students show up in the IRC that has been set up for the computing programs. And then there is the authenticity of the involvement with the code base, the other project artifacts, and all the project activities. The work they do matters in newer ways, whose measure is not necessarily the course grade. Whether we meet in the hallways or for course registration advising, or other events on campus, we inevitably talk about some piece of work or use of a tool that has been inspired by the open source phenomenon on campus.

More students get seriously involved in maintaining, troubleshooting, and documenting the computing infrastructure that supports the program's open source projects. They help each other more as explicitly as possible, leaving traces in wikis and mailing lists. They are more effective coding, commenting, testing, and reviewing. The client-oriented projects for local nonprofits have active user and developer communities that are led and energized by the participation of students and alums.

Students seek summer research opportunities and use open source for their research and capstone projects. There is an ongoing peer mentoring that focuses on open source.

What needs to happen in the meantime?

Faculty in my department must know the tools and practices. They need:

networking with other faculty to share and critique teaching resources;

support to set up and troubleshoot in-house infrastructure;

updating on critical changes to technology and services that need immediate attention;

mentoring from experienced open source developers;

advice and assistance on how support to open source development and solutions created by students and faculty can be commercialized;

advice with determining a business model that sustains the school's curricular commitment to open source and the school's partnerships with community members (such as nonprofits or government agencies) that are the direct beneficiaries of open source projects.

If I get the opportunity to participate in the POSSE 2-day workshop, how do I help my colleagues to join a department-wide FOSS effort? How do I help the students who work in the department to provide lab and system admin support to CIS courses? I will also be interested in finding and connecting with local FOSS developers and have them join some of the classes.

And yes, a letter of support will be very helpful.

Other notes:

I heard about POSSE at HFOSS Symposium at SIGCSE 2010, when several participants told me about teachingopensource.org. I attended POSSE Worcester State 2010 and HFOSS Symposium at SIGCSE 2011.

This is a graduate course, will have about 15-20 students. This is currently taught online using Blackboard. But that will not be a constraint to share course material/student assignments etc. with open source community and guests. I will be open to using any other medium like wiki etc. The entire course is taught online at this time, we are also developing on-campus Graduate program, but I can't say anything about its approval date. This course is one of the four foundation courses taken by students in the first year and preferably in the first semester of their graduate degree program in Information Technology. We have very diverse body of students. Most of them work full time, few part time and there are few international students. Most of them know programming, databases and have exposure to Unix/Linux at different levels. In our school, we are moving from contents driven to SLOs (Student Learning Outcome) driven model and we are in the process of developing course outcomes for graduate level courses. As they become available, I will post here.

This course covers project life cycle, planning templates, project deliverable, project work breakdown structure, estimating resources and task costs, Gantt charts, PERT techniques, project team duties and responsibilities, project team management techniques, and software tools for large projects. Currently, it is mostly theoretical course based on PMBOK guide of Project Management Institute (PMI). Students do learn concepts, but do not really apply in a real project. The students do pretty good in this course and value its importance. I would like to modify this course by including projects, where students can apply the project management concepts learned.

Student Learning Outcomes:

Student will demonstrate online research skills by investigating an advanced IT topic for a semester project.

Student will synthesize project management principles to prepare a WBS.

Student will demonstrate the use of a project management tool by designing key data elements and posting the results to a team project.

Students will utilize interpersonal skills by working in a distributed team environment as evidenced by their wiki contributions.

Students will document project management planning as evidenced by their posting to a team project.

Students will prepare a technical presentation explaining an advanced IT topic as evidenced by their semester project.

Students will analyze a project plan and prepare a written report of their analysis as evidenced by their semester project.

I have been assigned to teach this course first time in the Fall 2011 and I would like to embed a real open source project as main component of this course. I believe that students will be better prepared for project management after managing a "real project." Ours is an urban school and most of our students are African-American students. Our department chair always encourages to use new techniques in teaching, if they help students to understand better.

Flash forward to Summer 2012

The best course, I ever taught was the Project Management course last year. The students were so excited that they never wanted to end this course. But every good story has to end, so was this course. I believe using open source project management tools provided my students a great opportunity to apply their knowledge of project management into real projects. Few students, who already work, have told me that they use the experience learned in this course at their work place and feel prepared to manage larger projects. I myself learned open source project management a lot and continue to use it in this course. I am myself convinced that I can apply open source concepts in my other courses as well.

What needs to happen in the meantime?

I am aware of open source idea, but have never been part of any project. I met couple of people at SIGCSE 2011 and after talking to them I am convinced that open source participation will add value to my Project management course.

I need to create a list of open source articles, possible projects, and the tools to use in this course. I guess, it will be more clear after POSSE training.

Students will read the textbook by Karl Fogel about how to produce open source software as part of reading assignment.

Fedora 16 release is in the pipeline and its feature freeze will happen around July, which is just before my course starts. I will create a survey to find my students' technical background and based on their expertise, they will be assigned on different fedora modules. They can contribute in meeting minutes analysis, mailing list analysis, commit analysis, ticket analysis. They can create burn-down charts. They can monitor whether feature development/porting is on track. Are there enough people working on a module? Are bugs description clear? They will also write user manual/one page release notes/marketing write up/ release feature profile/QA documentation. They can also work as a part of testing team.

The Marketing team needs plenty of help translating the engineering work that's already being done out to multiple markets, and if they'll be lurking on various subgroups/projects, blogging and publishing weekly write-ups on their observations would help Fedora contributors keep track of other activities going on, since it's such a massive project and nobody can stay atop all of it. (taken from Mel's email.)

I definitely want my students to learn about version control. They will learn through Fedora project as well as an assignment created by me.

Students can work as ambassadors during Fedora road shows.

NCAT will provide access to Linux to all the students of this course.

I will provide a Linux tutorial to all the students, which will include basic commands, editor, version control and other important tools, student must know.

Being closer to RTP, I am sure I can find some speakers, who will be willing to visit Greensboro.

I have to find a list of possible conferences/ workshops, where my students can represent their work.

Discussion on how to manage student teams will be useful.

This is a grad level course, I have to make sure that contents I include are appropriate to 700 level. As long as, I am able to assign homework/projects, which involve any material to broaden their understanding of project management, that would be sufficient enough to satisfy the objectives of this course. One way to look at the difference between undergraduate and graduate course is that graduate students are expected to do more analytical, synthesis and evaluation kind of assignments. I am sure we can find plenty in open source world.

Penn State University, Schuylkill campus is located in rural east-central Pennsylvania. Our enrollment is about 1000 students (http://www.sl.psu.edu/) and is a mix of commuter and residential students.

We have one course, IST-402 Emerging Issues and Technology, which allows an instructor to have the flexibility of offering courses of interest that may not be a regular offering. In the Fall 2009 term I offered Python as my IST 402 section. I had planned to work through a book with the students, as I knew that most were not strong programmers. I also decided set the course objectives to be high level and not too overly ambitious.

Students will be able to:

To create and implement Python programs with appropriate use of selection, repetition, functions, and data structures.

To analyze and explain fundamental programming concepts such as string manipulation, loops and recursion

To compare and contrast JAVA and Python

To understand how Python is used in embedded systems

Well little did I know that the students would fall in love with this language. On the first night we did a 'tour' of the language, the editor and wrote 3 programs together. They were simple math programs and ones that the students had seen in other courses and just for fun I threw in a function call. I sent them home with the assignment of writing a program of their choice. They could not just copy what we had done but they could do a harder math problem or something that would appeal to them. I actually did not expect them to come back with much more than some problem that was similar to what we had done. My past experience, with students in programming classes, is that in the beginning they just do what is assigned and not much more, they mimic what is covered and not much creativity is going on, so my expectation was not very high. Oh I was so so wrong!

To a student they returned the next week having written not only a more complicated math problem (like solving the quadratic equation, a small statistics package and a grocery store change maker), they also included several functions and even started looking at ways to work with simple data structures. The students were thrilled with being able to successfully write a program on their first attempt and really understand what they were writing. As the course progressed their enthusiasm increased and we finished the book in six weeks.

Of course I was now looking for things to do so we started working on some hardware, gaming and database work. The students who took this course have been talking about it for the past year, so I have decided to offer it again and I am expecting about 15 students (sophomores through seniors) to take the course. I plan to change my objectives to be more specific and do more with hardware and I would like to investigate how Python and PHP work together. I am currently teaching a course that uses Blender and it would be great to find a way to write some module in Python for Blender.

Flash forward to Summer 2012...

We had a blast in the Python class! I would have been happy with a class that had some enthusiasm and hoped that it would be similar to the 2009 class, but WOW they were even BETTER! We breezed through the material; the students really took to this language and kept writing extra programs. I found that they were writing things for other classes, even Spanish.

PyGames was a hit. We started small with a word game and a simple shooter game. They ended up working together to make me a special birthday game -shoot down chocolate chip cookies! The student told me that they finally got programming - how to attack the problem first and not dive into the code and also how to document it so they could share code. We also wrote programs for the arduinos, starting with simple stop lights and moving up to simple toys.

We also were able to write some programs that we gave back to the Open Source community. With some assistance of our community partners we wrote I would love to figure out why this course was so powerful - is it Python, is it success in programming, is it my enthusiasm? Maybe it's all three. I do know that they can collectively solve problems and team work is powerful when everyone enjoys what they are doing.

What needs to happen in the meantime?

In order to actually do this I need to learn more about how Python works with Operating Systems, in particular Ubuntu or Fedora as these are the two that I support and some project ideas that could be accomplished in one semester. I need to know how we could share with the open source community. I would like to have some really great programmer to come work with the students.

Before I describe the course, let me describe the environment. Bacone College is the oldest continuous center of higher education in the state of Oklahoma. We were founded in 1880 with the mission to provide education services to American Indians. To this day, the school stays true to that mission of serving American Indians within a culturally diverse environment. On this campus, there is no majority. The mix of ethnicities and nationalities is truly remarkable. You can access our website at www.bacone.edu.

Bacone is located in Muskogee, Oklahoma. A modestly sized city in Eastern Oklahoma, it is located in a mostly rural area but is within a one hour drive of Tulsa. My courses reflect the students that our institution has chosen to serve. We do have high achievers but we also see many students who are not well prepared for college. The majority of our students are first generation college students and, because of our mission, we draw from a wide geographic area. Our students come from small towns and some of the larger cities around the country and from outside the United States. It creates an interesting tapestry of students; some urban, some rural, some traditional American Indian, many typical of any college or university, most require some remediation but some are truly outstanding and would be that way at most any institution that they might attend.

Most of these students, particularly those in the CIS program, view their college career as a real opportunity. They have earned the chance to live in this diverse community and to develop skills that can allow them to go further than most had ever anticipated. To that end, many come hungry to learn. Some may not be as well prepared academically as might be desired but no one should question their desire. They will and do work and work hard to make the most of their opportunities.

I have selected our capstone class, Problems in Information Systems. This is a course only available to those that have completed most or all of their major courses. It is taken during their last year in our program. The course focuses on three primary issues;

the development of an understanding of the individuals place and responsibility to their discipline

a demonstration that the student has developed an understanding of Information Technology such that they are prepared to contribute and

a demonstration that the student can complete a project that is deemed appropriate and useful to its user community.

Among the projects that these classes have completed in the past include:

Development and demonstration of a issue tracking system appropriate for use by the college’s housing and maintenance teams.

Reconfiguring and deployment of a server deemed obsolete by the institutions IT staff to serve as a file server for students in CIS courses.

Bacone College currently uses a significant amount of Open Source Software in its operation. I was the prime mover in the implementation of Moodle as our Course Management System. Our issue tracking system, which grew from the work of a Capstone section, uses osTicket. The college’s website is implemented using Joomla. Every computer on campus has an installation of OpenOffice on it. Recently, I have added a Mahara implementation to support portfolios for my courses and for my students.

Similarly, I attempt to use Open Source software in my courses where appropriate. We teach C++ programming using Visual Studio but teach Java using Netbeans. In the Database Management course, the students use both SQLServer and MySQL. The goal is to expose our students to both commercial and open source products. Hopefully, they develop the sense that open source products are on par with commercial ones. Most of the courses in our program are very focused on hands-on learning. I firmly believe that the only way to learn most things involves experiencing it for oneself.

My background is a bit unusual for one in this role. I spent many years working in Oil and Gas Exploration and Production Research at three of the larger energy companies in the United States. I have worked as a development programmer, project leader and development director. Now I have returned to academia and have been a member of the faculty at Bacone for nine years. When I came to this institution, I was, and remain, the only faculty member dedicated to Computing. I have been given very wide latitude in the construction of my courses and in the development of our curriculum. In 2008, we underwent our latest curriculum changes, attempting to stay as near to the ACM standards as was practical.

Our institution is actively moving to support cultural preservation projects with various tribes. I would like to find a way to make this project fit into the overall direction of the college at this time. It should satisfy a need felt by the immediate college community.

Flash forward to Summer 2012...

The biggest challenge in teaching my students is often confidence. Many of them come from a background where they have not felt real success academically. They may have succeeded on an athletic field but not felt that ‘aha moment’ that drives creativity in problem solving. This course allowed these students to feel that moment. They took a real problem; not one from a book. They found a solution to that problem and they made it available to others. They got to experience the real joy of that ‘aha moment’ when they really know it is going to work. They got to sense the satisfaction that comes to those that build something that makes a difference for others. They started to realize that the benefits that one gains from developing something can sometimes not be measured in dollars. And they did something that will always be a source of pride for them.

As they leave this campus, they will take with them a confidence that only they can build for themselves. And, to those that follow behind them, the bar has been raised. The role of teacher changes as students move through a program. Initially, you are an expert providing information to new students. As the program progresses, the role morphs from being a giver of information to being a guide that helps students develop the information. During this class, the teacher roles changed again, this time to being a colleague, albeit one with some level of authority.

Maybe the best model is in project organization. During the capstone course, the professor starts to become more of a project advisor; one who provides encouragement, guidance and suggestion but who allows the student to become the colleague. There is a real sense of peace that comes when, as an instructor, you realize that your students are capable.

What needs to happen in the meantime?

I have a background as a working software developer and have led development teams of significant size. But I can provide only one person's perspective. In an institution of our size, students get to know one CIS instructor very well. In larger schools, there are more faculty, so more perspectives are available. Access to a working professional who is willing to mentor my students would provide significant help in resolving that shortcoming of our program.

As we are a small institution with very limited support resources, access to materials is always appreciated. I have worked diligently to amass various teaching materials over the years but, frankly, access to Open Source material is often lacking. This could be outstanding.

I do not have significant experience with Red Hat. However, I do have a solid background using Ubuntu so I think that could be resolved rather quickly. Access to interactive tutorials would be very welcome.

All my courses use Moodle heavily. I have a long history with Moodle, both as an administrator and as a developer, so integration of tutorials for students into Moodle would be very doable.

As an individual basically working with little infrastructure support, access to turnkey systems sounds wonderful. As with most small private colleges, access to it at no cost is a luxury we rarely experience. I anticipate no issue with administration. They have been extremely supportive of my initiatives in the past and I expect nothing less should this come to fruition.

Anything else?

I have some experience teaching Open Source software. In various courses, I've used OpenOffice, Bugzilla, MySql and GIMP. In addition, the college uses Moodle and Drupal.

GGC is the 35th institution in the University System of Georgia. Founded in 2006, it is the nation’s first four-year public institution established in the 21st century. It is an open access college that emphasizes student success and students’ holistic development by emphasizing technology use, student research, and service learning. Integrating technology into educational experience is one of the college’s guiding principles. Another interesting point: GGC does not offer tenure.

The Information Technology (ITEC) major has three concentrations: Software Development (my specialty), Systems and Security and Business. The Software Development concentration currently has the highest enrollment. Because GGC is a new school, we are now seeing dramatic growth in the upper level courses. I am teaching the only section of Software Development I this spring 2011, with a total of 12 students. My current students vary from sophomores to graduating seniors (the course has a prerequisite of CS2), with a few of them taking it as an elective. Next fall 2011, there is one section of Software Development I that I will teach, and it has already reached its enrollment cap of 15. Currently I am evaluating the text “Software Development: An Open Source Approach” by Tucker, Morelli, and de Silva, as a text for fall 2011.

I am new to being a professor, so I admit that I can improve my teaching, and am trying to find ways to do so. For over 20 years I worked in industry as a consultant, curriculum developer, and architect for software vendors that provide Application Development/Business Process Management/Enterprise Integration Application workbenches. This background informs my teaching. I believe strongly in group projects, in the synergy of team work, and in nurturing the strengths of each of my students. Memorization is not encouraged, and my emphasis is on “real world” applications, with a focus on learning, and solving problems.

Some of the highlights of the current course:

Use of an open source CASE tool: Students (in a group) were assigned a Course Management Scenario. They were to choose a CASE tool, implement the project and produce a written report. The report included the technical aspects they experience with the tool, and also the project management and communication successes they experienced. They were also required to include the least successful aspects of the project they encountered. A demo of the toolset was also a deliverable.

UML: Each student was assigned a particular diagram type to be the chief expert on, including a presentation to the class.

My goal as a teacher is straightforward. I see every student I educate in my Software Development I class on the path to a career that fulfills them, that they enjoy, and that allows them to lead the lifestyle (that includes family, friends and community) they envision.

What needs to happen in the meantime?

Technology is always evolving, in unpredictable ways. I need:

To give my students material that excites, inspires, and motivates.

Help with staying up-to-date and aware of future trends.

Advice on the best tools that are available to my students that do not have a budgetary requirement.

Help with maximizing my productivity. GGC is a new school, as opposed to more established colleges, and I often have many obligations outside of course development. What works that I can re-use without reinventing the wheel?

Advice on the best real world projects that will give my students the skills they need to succeed in future courses, attain future internships, enhance their resume and attain meaningful, fulfilling employment.

I want:

My students to contribute to open source projects; not for a grade, not for extra credit, not because I require it of them.

Advice on getting my undergraduate students published, especially for those that are interested in graduate school. This will improve the individual student’s experience as well as enhance the reputation and success of the ITEC major and GGC.

Ways to obtain financial help for my students to attend conferences, contests and other opportunities for them to network outside of the GGC community.

To continually refine and improve the objectives and goals of the course according to global standards that now apply to IT students and professionals.

Description: Similar to many Capstone courses, this course is designed as a self guided project with a faculty advisor overseeing student progress. Students are required to formulate a proposal where they plan their semester work and write a final report detailing the project and results attained. The advisor oversees the project, guides and mentors students and insures progress is on track during the semester.

Where it differs from most senior project courses is that the focus is on research and the project is internal and in the advisors field of interest. Specifically, the project focused on applying the CMU Sphinx Speech Recognition Toolkit to generate a set of baseline speech models. Students were tasked with learning about Sphinx through online resources and followed by installing and configuring the latest release on a queue of machines running Linux.

Students were also introduced to a large data set, LDC Switchboard corpus, comprised of 100 hours of recorded audio along with an accompanying set of annotated transcriptions matching the audio. Additional data sources such as a phonetic dictionary and language modeling data critical to the process had to also be located from various online sources and students had to go out and find them.

The ultimate goal is to develop infrastructure for doing robust speech research and ease the knowledge transfer between student groups across different semesters. Documentation and developing tools to simplify processes would be crucial outcomes in the success of the project.

The University of New Hampshire at Manchester (UNHM) is the urban, commuter college for the University of New Hampshire. Our student body is diverse and many students have significant job responsibilities, some fulltime, outside of their classroom commitments. As a new tenure track faculty member, it is an exciting, supportive and friendly place to work with tremendous yet exciting challenges to engage students in the sciences.

The makeup of the class was split evenly between juniors and seniors from two majors: Computer Information Systems (CIS) and Engineering Technology with a concentration on Computer Technology (ET-CT), that latter being similar to Computer Engineering program at other institutions. CIS majors focus on standard IT topics with courses in database systems, web authoring, networking and operating systems. All ET-CT students matriculate from a community college system and spend their junior and senior years focusing on electrical engineering and computer topics.

Even though students from both majors have had extensive experience in project focused courses built into the curriculum, most of these courses have a specific topic and a specific goal. Perhaps a database course with a real world client requiring online access to various types of data, or a software engineering course requiring the design of a geographical mapping client that access an automatically generated database.

A research project gave students an opportunity to experience a unique environment where goals were more loosely defined. This caused quite a bit of apprehension among students. The concern was about how they could possibly accomplish a task that did not seem well defined or laid out in front of them. Creating a good mentoring relationship was an important aspect to the success of this course.

Flash forward to Summer 2012...

I think for this class to be successful it will have created a buzz on campus. Students are excited about being a part of UNHM’s Capstone class in CIS. Some may have already done some independent study in it during the summer and now get to immerse themselves with other students to do some cool, fun, real world research. The type of research may surprise them because it opens their eyes that research isn’t necessarily pure mathematical, highly obscure, but can be very hands on and very engaging.

Looking back to the inaugural class that started in spring of 2011 and continued through the summer term with some students doing an independent study, the first significant contribution they made was to document how parallel model training worked on Sphinx. Students had such a hard time figuring this part out as there was little documentation they could discover online, but once the group figured out how to do it, they spend a good deal of time writing up a concise description on our wiki page and making a contribution to the community in general.

From this, students realized that just writing about a process, clarifying and documenting something that had not been well documented before, can make a significant contribution to the overall speech community as a whole, as other researchers could benefit from that knowledge. It was also nice to see that as an IT program, this type of research fit neatly within the IT scope of their degree, yet was cutting edge. It demonstrated specifically to the group of CIS students that they were more than individuals that helped fix someone’s printer.

What needs to happen in the meantime?

After CCSCNE 2011 I started to realize that an additional way I could transform this Capstone course is through FOSS and HFOSS. As my goal is to excite my students about science and engage them by doing hands on work with cutting edge technology, I think having them also contribute during their class experience, to the open source community directly would be tremendous.

We’re working with Sphinx and a collection of other open source tools and so there is a great deal of opportunity to immerse students not only in a research experience but also in the open source community to give them invaluable mentoring opportunities outside of the class room and of the university. This is what I want to gain from these workshops. I took a 1 day pre-conference workshop at CCSCNE on HFOSS, but that only scratched the surface.

I think it could help transform what my plans are for this class and could transform the education my students will get not only with this class but in the entire CIS and ET-CT programs I’m involved with.

Any other notes?

I had the opportunity to take the HumIT workshop with Greg Hislop and Heidi Ellis at this years CCSCNE 2011 and found myself excited about integrating these ideas with my newly formulated Captsone class. Mel and Sebastian came the next day and gave an Open Source Field Trip and now I'm hooked. I think for the challenges that face our students after leaving UNHM, this type of experience and real world mentoring could be invaluable.

In the past, this has been a traditional software engineering course that starts with requirements and goes through maintenance. This past fall, I've used a FOSS project as the base with mixed success. Definitely a learning experience.

I have a follow-on course, CS 491 Advanced Software Engineering. I taught it for the first time this year. In this course, I allow students to apply what they've learned in CS 490 to a FOSS project of their choice. This course had five CS students. Student projects and instructor log may be found at: http://www.xcitegroup.org/softhum/doku.php?id=workingpapers

Last year there were 11 students in the CS 490 course and there look to be about 9 this fall. These are all seniors and are a mix of CS and Computer Engineering students. The course is required for the CS seniors. The mix of backgrounds poses somewhat of a problem since the Computer Engineering students do not have the same coding and software background that the CS students do. I need to figure out how to better handle that.

The WNE students are a work-oriented group of students. Many are first generation college attendees and most want to see the direct application of the material that they learn in class to work. My impression is that when they enter CS 490, they don't see the utility of the course clearly. By the end of the course, some students "get it", but others are still not convinced. Ad hoc feedback from folks that have graduated and been out indicate that the course is very useful. But I'd like students to get an understanding of the importance of software engineering _before_ they graduate :-)

Western New England University is a considered a "Postbaccalaureate with arts & sciences (other dominant fields)" We have approximately 2500 undergrads and 1200 grad students. We have Colleges of Arts & Sciences, Engineering, Business, Pharmacy and a Law School. WNE has a very strong teaching emphasis and very much cares about education. I am starting to see a push towards more research, but the emphasis seems to be on pedagogical research. There is much support for educational innovation.

Flash forward to Summer 2012...

The best class I ever had was when I had several teams of students involved in different humanitarian FOSS communities and contributing to the projects. These students made contributions that were of sufficient value to the FOSS communities that students were convinced that they had had impact on others' lives. An added bonus was that the contributions were of sufficient visibility that I was able to point out these achievements to my dean.

The students grew tremendously during the progress of the course. Students now have an understanding of the software engineering aspects of software development and why these aspects are important. Just as importantly, students grasped the professional aspects of software development. They understand the main communication mechanisms of open soure and can now communicate effectively in a professional environment. In addition, students can now work independently on project development. They know how to identify project needs, how to scope a piece of work to be accomplished, how to plan to accomplish the work and how to get the work actually accepted into the project.

One of the most cool aspects of the course was how the community provided professional affirmation to my students. Not only did students gain understanding of the mechanics of developing software, the interactions with the community also convinced them that they had the skills to make a valued contribution. They left the course with an understanding that they could do it!

I've learned a lot from this course as well. I've learned how to provide sufficient scaffolding to aid learning while at the same time supplying enough freedom for students to learn on their own. I now know how to help students identify likely projects and how to help them gain entry into those projects, while not inserting myself in the middle.

I also have some understanding of the bumps that students will typically encounter when approaching a new FOSS project as well as the potential glitches in learning software engineering approaches such as requirements. And I'm more confident in helping students learn within projects that I may not know the programming languages and technologies involved.

What needs to happen in the meantime?

In order to achieve my dream, I have few needs, but many wants.

My need is for mentors for students within FOSS projects. In my experience, without a "point person" within a project students won't get contributions committed so having such a person is critical. This doesn't have to be a committer, although that is helpful. The person could be someone who has the attention of the committer.

I also need to have a better idea of the FOSS community attitude towards intermittent contributions by students and how to handle these. I have a real concern that students will successfully join a FOSS community and can make a contribution, but will only be active in the community for the duration of the course. How do I create continuity within the FOSS projects between semesters and years across different students (and do I need to?)?

On the technical side, I need a better understanding of Git. I have a basic understanding of SVN and have used it in the past, but Git is quite different.

Under the "want" category, I'd definitely like a FOSS community member to work with my students to help provide insight into technologies used in FOSS as well as FOSS culture. This person would have hands-on experience in the project, but they are also likely to be closer to my students' age and the near-peer experience has huge impact.

I had the opportunity to take a few students to the GNOME Summit and Hackfest. The students that attended had an incredible learning experience. So one of my biggest "wants" would be to take students to similar events and/or to host a hackfest at WNE.

I'd also like to be able to fund students to present work at other venues. For instance, to take students into local high schools or to conferences.

And I'd definitely like help in getting my students' work and the course advertised. This is an area in which I have little experience. I think that my students are doing cool things and I'd very much like to raise the visibility of our work.

Champlain College is a non-tenure granting teaching institution, and it is situated in Burlington, VT. Over the past ten years, Champlain had a dramatic change, but we are still a professional-oriented institution. In the past few years, Champlain had inaugurated seven graduate programs. Champlain College started Computer Science and Innovation (CSI) program last year housed in the Division of Information Technologies and Sciences. Other programs offered in the Division are Game Programming, Digital Forensic, Computer Networking and Computer Information Technology.

Currently, we have 15 faculty members in the division, but I am the first and only faculty member in the CSI program. The goal of this program is to add innovation into the CS program, whose enrollment had declined over the years.

One component we wanted to add is Open Source. We want to expose our students to this area, which we believe will be very beneficial to them. This course is offered in the Spring semester of the second year and the target audience are sophomores. This is a complete new course in the book and we have no faculty member who had experience in it.

I learnt about your program via Consortium for Computing Sciences in Colleges — Northeastern Region, and I strongly believe this program will help me create a course that better introduce the students to Open Source as a contributor rather than user.

Flash forward to Summer 2012...

In the past, I have always been the user for Open Source and I have used many of the applications out there. However, I have never once contributed into this community. This course had given my students and I the opportunity to know this community better and contributed to it. I believe this is a very valuable learning experience for both my students and I. Since we are the only group in the College that knows Open Source better, we can advocate for it. We will help push the administration toward adopting more applications from the Open Source market.

What needs to happen in the meantime?

Since I have never contributed into the Open Source, I will have to do a lot of research to figure out how the community works. If I am able to participate in your program, it will help me tremendously. Not only your program can help me with the material, but it will also introduce me to the members in the community that I can seek help if needed. Currently, there is a lot of unknown for me, and I am hoping to be able to connect all dots with your help.

Any other notes?

I learnt about POSSE via the Consortium for Computing Sciences in Colleges — Northeastern Region.

In addition, it is likely that two senior capstone students will pursue open projects. One intends to implement and test a multicore wait-free, work-stealing scheduler for the Transterpreter project, which I have been involved with as a core member for roughly 7 years. The second student intends to use OSD600/700 at Seneca as a starting point for designing a senior capstone experience in contributing to a FOSS project over the course of the 2011-2012 academic year.

My second Freshman Seminar, FS102: Technology and Activism, represented my first and deepest dive into introducing students to open source software. Paired with Art and Activism, a seminar taught in parallel by Prof. Darren Miller in the Department of Art, these two classes introduced forty first-year students to the process of collaborating in open communities. Students conducted interviews, developed logos, and wrote text contributing to the Fedora 13 release during the spring semester of 2010.

What was it like taking forty students at a small, residential, liberal arts college into FOSS? It was overwhelming and hectic. Even with the help of a colleague on loan from Red Hat (Mel Chua), we discovered that we had taken the most ambitious path forward first. However, what we loved about the experience was that the course was extremely authentic: students were interacting on IRC and mailing lists, using bug trackers, reading documentation, installing FOSS software... they were fully engaging in as process FOSS participants.

The HCD experience was both more manageable and more complex -- with 10 students, it seemed "easy." However, the students were diving deeper into their communities over a longer period of time. Managing the communications, keeping projects on track and on time -- this was harder to do than I expected. While it is important to be flexible when working with open communities, I clearly needed more scaffolding and structure for keeping things on track locally, despite any scheduling setbacks that might occur in the students' interactions. (Or, perhaps not... I'm still learning how to interface the 14-week semester with the fluid, ongoing interactions that take place in many open communities.)

Despite the challenges, these experiences have been invaluable, and they have served as excellent starting points for discussions with colleagues across the campus about ways we can interact and collaborate. My colleagues would naturally be inclined to think that the computer (and/or programming) are essential aspects of what I do, and therefore any collaboration we might engage in would necessarily involve something very "technical." Working with a FOSS community means that I can find natural ways to collaborate with faculty in art, environmental science, biology, political science, economics... really, any department at the college. It simply becomes a matter of finding a community in which we can engage our students, and the process, communication skills, and reflective process of learning take center stage, while technical skills become something to be picked up and discarded as needed and as we go. From my point-of-view, this makes FOSS participation a natural fit for me as a member of a computer science department at a small, liberal arts college.

Flash forward to Summer 2012...

I had two big victories in FOSS participation with my students this past year. One, in my majors course (Programming Languages), and one in my collaboration with my colleague in Art.

My offering of Programming Languages was different from any course I've run previously. During the Spring of 2011, I took part in a workshop at SIGCSE regarding lab-based instruction. Led by Mike Clancy and his team of collaborators, this workshop inspired the design and offering of a "by interpretation" offering of the study of languages in Scheme. The course design was conducted in the open (and it needs a lot of work!), but we spent 8 weeks digging deep into interpreters, and the students surprised me with how well they adapted to the hands-on learning paradigm.

The last four weeks were the success. In transitioning to patterns for parallel software construction in occam, I brought out the CC-licensed text and FOSS tools that I contribute to. The students were charged first with diving into a new language, and then set a simple challenge: given a sensor, motor, or other interesting component from our lab, develop a new parallel-safe interface to this hardware that we can add to our project's library of code. In addition, they then had to contribute documentation to the recently webified version of the book. The students joined our developer's list, were granted access to the Subversion repository, saw how to check out and build the project... it was great. And the contributions they made! Their work not only was valuable from a learning perspective, but it will add value directly to our ongoing research regarding the use of parallel languages for robotic control.

The second success has a much greater impact on the larger FOSS/EDU community. During the spring of 2012, my colleague Darren ran a second FS102 (I was not scheduled to do so). However, with the support of our departments, we took our experiences with an initial "deep dive" into FOSS, and created a concise set of assignments that introduce first-year students from a broad background to the communication and collaboration involved in FOSS participation. These assignments were influenced greatly by our conversations with Karl Wurst, who we had the opportunity to work closely with at POSSE 2011.

The assignment designs have multiple kinds of impact. First, we can share them out as modules that can be reused at other institutions (or, we hope, by colleagues of ours at Allegheny). Second, they provide first-year students with meaningful ways to engage FOSS communities -- and, unlike our previous experiment, we have a plan for how they might continue to participate. During the 2011-2012 academic year, I began establishing a Community Collaboratory at Allegheny College; this is a "maker space," if you will -- a place where students, faculty, and members of the community come together to explore art, science, and technology through the act of making. The FS102 students were able to leverage this space in their studies, and (more importantly), we will follow up during the 2012-2013 academic year with a learning-living community dedicated to exploring the intersection of serving globally by collaborating and making from a fundamentally FOSS perspective. This LLC will draw on the experiences of our FS102 students, and explicitly bring them back as "alumni," so they can serve as "peer guides" as a new generation of students explore into the realm of FOSS participation.

What needs to happen in the meantime?

A critical resource we think we're going to need is support for either (1) bringing outsiders in to our seminar, or (better) (2) taking the students out into the world. There is some internal support for these kinds of things, but a critical part (we think) of the Freshman Seminar success will be making the FOSS participation "real" for our students.

The most important thing, however, is the community of educators doing this kind of work. Continuing to work with and develop infrastructure for collaborating with educators around the US and (for that matter) around the globe on how we can successfully integrate FOSS into our classrooms is essential.

I'd like to focus on two of our classes that are relatively early in the degree programs. The two courses and descriptions of them are:

INFO 154 - Software System Construction - Introduces considerations that make large software systems challenging to design, build, and maintain. Topics include coding standards and documentation, program architecture, verification, software evolution, and managing large software systems. Includes software modification and development using pair and team programming.

INFO 324 - Team Process and Product - Provides hands-on experience with working in small teams to apply processes and produce products typical of current best practices in computing and information technology organizations. Allows students to develop an integrated understanding of project life cycle phases. Examines issues of team organization and operation, problem solving, and communication.

I see these courses as the most likely candidates to introduce all our students to FOSS. At present, the first course starts to introduce students to software beyond the very small system level. The second course focuses on team-based development. Neither course is specifically FOSS based, but both could clearly be focused around "the open source way".

The courses will be taken by students in Sophomore to Junior year. The students are typically majors in IS or IT. Both courses are fairly hands-on and mix individual and small team activities. Both courses are quarter term courses, so they meet for 10 class weeks plus an exam week.

Flash forward to Summer 2012...

Across this pair of classes, students develop an understanding of FOSS and how to be FOSS contributors. In INFO 154, they learn about FOSS tools and technique. They gain first experiences with larger code bases and how to navigate them. They also learn about how FOSS projects operate. At the same time, they contine to develop skills in writing requirements, designing parts of systems, and dealing with code. In INFO 324, students have a chance to apply what they learned about FOSS in small team projects. They work on selected tasks for FOSS projects with the full class and in small teams.

What needs to happen in the meantime?

Time is always the scarcest resource. My biggest need is to find the time to implement the ideas, and to continue my own learning and participation in FOSS. I would also need to bring other faculty members up to speed on some aspects of this effort. In general, the notion of students participating in FOSS is well-supported here. But, as is typical, other faculty have not had the time to get themselves up to speed. I would like to build and share teaching materials both for faculty and for use in classes taught by those faculty. This on-going effort is reflected in sites like those of the SoftHum and HumIT projects (see http://xcitegroup.org/projects.html)

The class is the standard undergraduate Software Engineering class. When I was first asked to teach this class about five years ago, I was positively pre-disposed. I was asked because I’m one of the few faculty members with a fair amount of “real-world,” industry experience. I thought the class would teach the students good software development practices, lessons that the students were not getting elsewhere in our curricula. (My expectation came from the similarly-named course offered by Barbara Liskov while I was an undergraduate in the 1970s.)

After reviewing various textbooks and curricula for Software Engineering, I realized that such courses normally focus on the less technical aspects of the process --requirements, documentation, design review, testing, maintenance – in the context of large development projects.

The first time I taught the class I used the Sommerville text. The class was dry, somewhat abstract, and not engaging to the students. The class size was 20-25, and I had them design, document, and implement a small software project of their choosing in groups of 4-5. The results were not particularly impressive.

The pre-requisite for this class is only our Introduction to Computer Science II course, which means they’ll have had one introductory course in C++, only covering the basic control structures and arrays, and a second course introducing them to Java and some basic object-oriented concepts. Many, but not all, will have taken our Data Structures course, and about half will have taken Design and Analysis of Algorithms. Too many students, whether they’ve taken the Data Structures and Algorithms courses or not, are weak programmers.

The next two times I taught the course I used readings The Mythical Man-Month, and other web articles I found. I had the students write a short summary/critique of each reading; we discussed the topic in class; and I also had them do a group development project.

I successfully “outsourced” this course for a couple of years to another professor. I did not enjoy teaching the class, and did not feel very effective. I thought the subject matter was “soft” (more of an art than a science), most students were not motivated and/or experienced enough to appreciate the subject matter, and I thought the subject matter difficult to teach in a classroom environment.

Last year this course was returned to me. The latest wrinkle is that I am assigned to teach one or two sections, one or both of which have an enrollment of fifty students. Last fall I chose a new textbook by Schach. I felt I could not pull off the readings and class interaction with that many students in the class. Overseeing so many free-form group projects was also something I felt would be too difficult (i.e., too much work) in classes of this size. I also felt that I was neglecting to introduce the students to the Object-Oriented Design techniques (e.g., the UML diagrams) that most textbooks introduced. Using the Schach text, I assign chapters to read from the text, assign (mainly straightforward) questions from the end of the chapter, and also assign about six small, relatively straightforward, group projects, also from the text.

This course used to be a requirement for a Computer Science degree. A few years ago it was an optional elective, but often taken because students were required to take several of these optional elective courses. We have since reinstated it as a requirement.

Flash forward to Summer 2012...

I’m unfortunately negatively jaded... to answer the question as asked... I will dodge some on this initial attempt.

I’m also pessimistic about whether it’s possible to teach relatively inexperienced students about the software engineering experience in a classroom environment. Many of the issues that come up on a real, larger project are quite difficult to simulate in a classroom environment. The projects aren’t big enough, don’t last long enough, don’t have real users, and don’t have a maintenance period. Also, most of the groups will have one or two participants that aren’t participating, and the students find it hard to find chunks of time for them all to get together. (A lot of students commute, and many have significant outside work obligations.)

I’d like for the students to encounter and get a sense of some of the aspects of a real software development project.

What needs to happen in the meantime?

What excites me most about the POSSE opportunity is that for several years I’ve had the idea that the closest we might come to introducing students to a realistic software development experience is to have them work to extend or enhance an existing product. And the numerous available open-source software bases provide an ideal platform in which to work. The students would have to understand an existing design, by reading documentation and code, and provide their own design, implementation, documentation, and testing for their enhancement.

Although I liked the idea, I didn’t like it enough to devote the many hours necessary to get something like this off the ground. (This fall I teach two other courses – Discrete Math, and a Intro to Computer class, and will have two large sections of the Software Engineering class, one with 50 students, and the other with 30-50 students. As a footnote, if there are any ideas for improving my Discrete Math class, which too many students have a lot of difficulty with, I would be most interested in that too.)

I’d love to have the opportunity to learn from, and brainstorm with, others who have tackled these challenges and made some headway.

Even though I’ve worked in a variety of development environments and situations, I haven’t done such work in the last fifteen years, so my familiarity with the current generation of tools is limited. Having assistance with these aspects would be of great benefit, both to me, and in consequence, to my students.

In any event, it would be of great benefit for me to interact with others facing the same issues in the classroom, and learn from those who have tried teaching this subject matter. If I’m really lucky, I’ll be proven wrong in my pessimism about teaching software engineering in the classroom.

Other notes?

I learned about POSSE from a presentation by Mel Chua and Sebastian Dziallas at EduComm 2011 just a couple of weeks ago.