by Chengyu Sun
I joined the CS Department at Cal State LA in Spring 2004. One of the things I found out as a new faculty was that managing assignment submissions was surprisingly difficult. At that time I was teaching three classes, and each class had between ten to twenty assignments including homework, labs, projects, and exams. Almost all the assignments had some programming components, and to submit the programs the students would email them to me as email attachments. Unfortunately, Email, despite being generally reliable, does not guarantee timely delivery, or sometimes, delivery at all. So every once in a while, I would receive some submission long past the due date, but the email timestamp would show that it was sent out on time; or a student would come to me claiming that his homework submission was lost by the email system, and there was no way to prove he was truthful or not. Even when all submissions arrived on time, it was a headache to keep track of them because of the number of classes, assignments, students, and in some cases, different versions of a submission due to last-minute changes. And on top of everything, for a period of time the campus email filter would block all zip attachments, which created even more problems. All in all, it was a mess.
In my second quarter I had enough and decided to do something about it. I spent two weekends to develop a web application that allowed the students to upload their submissions to a server, and allowed the instructors to easily create assignments and manage submissions. I called the application Heather Turnin Server (HTS) and started to use it for my classes in the middle of the Summer 2004 quarter.
I was quite happy with HTS, and the students liked it too because they also wanted an easier and more reliable way to turn in their assignments. However, after a few quarters of use, the limitations of HTS began to show - the user interface was spartan, and many basic features were missing, e.g. the students could not even see the files they uploaded. And because HTS was put together in a hurry, the code was not structured properly which hampered maintenance and new development. So in Summer 2005, one of our graduate students, Chris Orona, started a complete rewrite of HTS and renamed it to CSNetwork Services, or CSNS. The new system was named after CSNetwork, an old web system used by the CS department, and the "Services" in the name implied that it was going to have a modular design where new services could be added later instead of all implemented at once.
CSNS was built using Spring and Hibernate, two cutting edge Java web development technologies at that time. The system followed the Model-View-Controller (MVC) architecture, which made code maintenance and expansion much easier. The core functionality was similar to HTS, which focused on the management of classes and assignments, but the user interface was greatly improved and was much more professional and user friendly than before.
After Chris graduated in Fall 2005, I took over the development of CSNS. I added the role-based security and a slew of minor improvements and bug fixes, and started to use it for my classes. Since then, developing CSNS became somewhat a hobby of mine. In an off quarter, I would spend a couple of weeks to add a major component such as forums or surveys, and during regular quarters I would add some minor features and do some bug fixing. I also tried to have some students work on CSNS, but none of their code made into the actual system, mostly because the code quality was not up to my standard. The only exception was Chanwit Suebsureekul's Instant Messenger component, which was well written but was not included because I was concerned that it may affect the system performance.
CSNS was open for business in Spring 2006. At first, I was the only faculty who used it, but soon words started to spread. Students began to ask their instructors if they could use CSNS to submit their homework, so other faculty started to use CSNS as well. By Fall 2009, the system had served over 1500 students and faculty in more than 270 classes.
As more and more classes started to use CSNS, Dr. Raj Pamula, our department chair, recognized the potential of CSNS as a platform for program assessment. Under his guidance, I added a number of program assessment features to CSNS such as course journal, senior project listing, skill evaluation, and MFT data analysis. These features have now become an important part of CSNS that separates it from other learning management systems.