Current MS Students/Dhaval Joshi
From CSWiki
Components to Support Assessment & Bulletin Board for CSNS
Contents |
[edit] What I am planning to accomplish
This project is part of the effort to provide more useful tools and services through CSNS.I am working with development of components for the CSNS server to support Computer Science Program Assessment and High Quality Bulletin Board System that uses the latest technologies and is tightly integrated with other CSNS services.I will also prepare the documentation and necessary components so that future elements can be added as modules into the CSNS easily.
[edit] (Project) Brief Project specification
The course journal will include following documents for learning process.
- Course description.
- Syllabus
- Handouts
- Assignments/Exams
- Graded sample students work.
The Course Journal will include following features.
- The course journal module would let course coordinators update the description and course instructor to update syllabus, handouts,assignments/exams and student samples. The course journals can be compiled by simply uploading files containing the description of the course, course syllabus,handouts and assignments/exams.
- The instructor will be able to attach student samples simply by selecting their names from the list. Since the student samples are already in the CSNS system , therefore the journal module can grab those files from the CSNS assignment/exams submission module and attach it to the journal.
- This will let course coordinator upload one file for course description and will let instructor upload one file for syllabus and multiple files for handouts and assignments/exams. After the editing, the user can either temporarily save journal for later editing or submit it to the department chair(only course coordinator can submit the journal).
- The chair will be able to view journal, accept or reject the journal and export course journal to one PDF file. The users will be able to attach files in any format (Word, Excel sheets, JPEG, PS, PDFs) and when the department chair would export the journal the course journal module will convert these files to PDF format and then concatenate all these PDF outputs into one PDF file.
- The surveys are a big part of Assessment and are required by ABET and WASC.I am working on a survey module that would include features like composite questions and skip logics. The survey admin would be able to build surveys, filter the intended survey takers/students, save unfinished surveys for later editing ,publish surveys, view and analyze survey results and generate reports.
- The part that makes it a useful module for the assessment is the survey comparison. The Admin will be able to compare the results of a survey taken at two or more times and generate reports based on that comparison. If ,for instance, the survey is a student satisfaction survey, these comparisons will tell us how satisfied are students now with the program compared to the last time when the same survey was conducted, what has been improved and by what percentage.
- The administrator will be able to filter the set of users who can take the survey. Once the intended group of students to take a survey is defined then as soon as the survey is published(online) , the users in that group will get the notification about the survey upon login to the CSNS and they will automatically be granted access to the survey. Instead of building this survey system from the scratch, I will be using an existing survey module that was built by a group of students as their CS520 class project.
The Bulletin board will include following features.
- The system will support common features found in traditional bulletin board. This project will provide a custom Java Tag Library to access information from CSNS database. This will provide a robust solution for future development. Other developers will able to use these tags in their JSPs to display information from database. For example the tag library will provide an iteration tag to access all the students registered to a specific course. These tags can be used like other html tags. For details on standard feature, please view initial project description.
- Advanced features are related to Ajax, full text search, rich text editor, file attachment. These features will make it possible for users to preview most of the information without viewing or refreshing a page. For details on advanced features, please view initial project description.
- These are features that are specific to CSNS. The project will create a default forum for a course offered in the quarter and assigned moderator role to the instructor of that course. This project will use existing roles of CSNS registered users and also implement its own roles on the top of existing roles. For details on CSNS Integration features, please view initial project description
- I will build the neccessary class files and components that will actually help the future additions of the modules to the CSNS.The documentation will guide you how to use the components for the future addtions to the CSNS.
[edit] (Project) High level architecture
- System will provide a DAO layer to interact with database. This will be accomplished by using Spring, Hibernate and Hibernate Annotation.
- System will provide a tag library to display custom content on frontend. This functionality will be done using Java Tag Library.
- System will provide a Javascript Library to implement the advanced feature. This will be implemented by using AJAX, web 2.0 Model, display tag library and Taconite.
- System will use Acegi Framework to implement the security. CSNS currently uses Acegi for security. This project will use existing implementation of Acegi. But it will define its own roles and will configure access list using these roles on restricted resources which will be URLs
- System will implement full text search using Lucene
- System will also implement MVC Architecture using Spring WebFlow Framework.
- System will implement frontend using JSTL, JSP.
- POI Libraries, PDFBox, Jasper Reports for file type conversion and report generation .
Architecture :

- This is the architecture for CSNS. My part of the job is to work with every layer of above diagram add the required components discussed above and prepare a general documentation that will help the future users to add the modules.
[edit] Why this is academically interesting
[edit] Intended audience
- The registered users of CSNS will use bulletin board.
- Department's accreditation and assessment committee, course instructors, department chair.
[edit] Why this is MS-level work
- Components and library that I will be developing will allow future CSNS users to Add and remove the modules easily using the general documentaion that I will be writing for the components.
- In course journal one of the feature requires a lot of work, ie, reading different file formats and create PDF outputs. It involves finding the right encoding (e.g. .doc file can be simple ASCII text or can be UTF or some other coding) and then use a combination of libraries to convert them to PDF.
- Some of the features in survey system that require high level of skills are composite questions, data comparison (compare the results of the same survey conducted multiple times) in form of graphs and charts and other report generations.
- The bulletin board system will be integrated into CSNS in a way that an existing bulletin board system could not be and it would require a significant amount of programming sophistication to add these features in existing bulletin board. Please view CSNS integration features section of initial project description.
- This project will also provide features which are not available in existing Bulletin Board. For example, phpBB (the one used by ACM) does not have forum subscription, which is very inconvenient. It also doesn’t use a rich text editor, doesn’t allow file attachment.
- The system will also provide a very sophisticated UI using AJAX and WEB 2.0 which are not available in any open source bulletin board system. Please view Advanced features section of initial project description.
- This system will use same coding standards used by existing CSNS. These standards (used by different frameworks) make a robust solution for future development. The system will also provide a Java Tag Library to access CSNS database which could be used to display CSNS information for future development
[edit] Previous work
[edit] (Project) Platforms to be used and what I will add to each
- Frameworks
- Security: Acegi
- CSNS uses Acegi for security. I have to edit the existing configuration of Acegi to add more roles and access list for restricted resources.
- CSNS does not use CAS. So that's why bulletin board wont use it.
- Build: Ant, Hibernate Annotations
- The system will use Ant for compilation and deployment of application. It will also use Hibernate Annotation for object mapping.
- I was planning to use XDoclet for object mapping but I prefer to use Hibernate Annotation after reviewing it because it allows to create mapping without generating HBMs files.
- Front-end:
- Server Side: JSP, JSTL, display tag library, taconite and Spring WebFlow
- System can use Struts instead of Spring WebFlow but CSNS uses Spring WebFlow. That's why i prefer to use WebFlow
- Client Side: JavaScript, , AJAX
- Server Side: JSP, JSTL, display tag library, taconite and Spring WebFlow
- Backend: SPRING, HIBERNATE
- 3rd Party Api: JUNIT, Log4J
- Full Text Search: Lucene
- We could use google search or other third party tools for full text search but Lucene provides extra controls to developer. Developer can index only required information.
- Security: Acegi

[edit] (Project which is a re-implementation of an existing system) Why I am re-implementing an existing system
- The Computer Science Network Services (CSNS) is a web application that provides services for students, faculty, and staff of the Computer Science Department at California State University, Los Angeles. It is planned to offer a number of CS related services. Currently, it is used primarily for instructors to manage course assignments, and for students to submit assignment files and receive assignment grades.
- I will be adding my Course journal assesment component ,survey and Bulletin board to the existing CSNS System. There is no course journal assesment avaliable on CSNS,The existing Bulletin Board uses phpBB (the one used by ACM) does not have forum subscription, which is very inconvenient. It also doesn’t use a rich text editor, doesn’t allow file attachment.
- Authorizations (based on the action of one user the authorization for another users to some specific resource can change e.g. once the course journal is submitted by course coordinator every instructor will get read only access to that journal. Later on if the department chair rejects the journal no body will be able to view that journal anymore except the author of the journal. In survey, whoever is selected by the admin to take survey will be granted access to the survey)
- Convert file formats (Images, word ,xls to pdf).
- To provide most information to user without refreshing page.
- To implement full text search using Lucene.
- To provide Rich text editor.
- Implement the Live thread feature.
- To provide Quick quoting feature. It will allow a user to respond different parts of a message instead of whole message.
- I am sure that i will use AJAX to implement this feature. For that, i am planning to write seperate javascript library.
- For rich text editor, i will be using 3rd party api. There will be a backgroud thread for each page which will contineously submit a form after certain time and will rearrange the thread listing.
- For quick quoting feature, I have to slipt messages into paragraphs and store these into database.
- Database access, I will create DAO (Data Access Object) layer using Spring and Hibernate.
- advanced feature i will create Java Tag Library and separate javascript library. I will also use JSTL, Spring tags, taconite, display tags and Acegi tag library.
- Write Search api for full text search Create indices for requirement using lucene.
- The work involves lot of interesting thing in this project is the exposure to a lot of different technologies that are discussed above.
- I will be using all the frameworks used in the project and will learn the architecture of the Web Enterprise applications.
[edit] Anticipated challenge(s)
[edit] Challenge(s)
Course Journal
Bulletin Board
The existing CSNS provides services to students and instructors. The right value of a project is that could be used by hundreds of students in coming years.The project has advanced features and the cutting edge technologies to be implemented these features make it challenging. Following are the challenges.
[edit] Anticipated approach to each challenge
[edit] What I bring to this work
[edit] My relevant background and experience (CS 590)
One of the things that helped me the most with this project is my Web Programming CS520 class. I learned a lot about Web Programming in that class. In addition to that I also found a few very helpful books as Spring in Action. These books provide a pretty comprehensive and thorough explanation of the Web Technologies.
[edit] What I find interesting about this work
Dev Platform: Windows XP
Deployment Platform: CS3 Server
Language: JAVA, J2EE
Database: postgresql
Security: Acegi
Build: Ant, XDoclet
Front-end: JavaScript, JSP, JSTL, AJAX, display tag library, taconite and Spring WebFlow
Backend: SPRING, HIBERNATE
3rd Party Api: JUNIT, Log4J
Version Control: Subversion
Application Server: Tomcat

