Welcome to CSCI 335, Software Engineering through Web Applications!
Catalog Description: A survey of technologies and techniques for designing and implementing high-performance, web-based software. Topics include client-server computing, usable graphical user interfaces, web-based information retrieval and processing, testing and debugging practices, and security issues and vulnerability prevention.
Topics covered include
- the distributed architecture of web applications
- the fundamentals of HTML and CSS for displaying Web content
- the design and implementation of server-side applications, specifically using Java technology
- a survey of web application development tools and technologies
- systematic techniques for testing and debugging web applications
- security concerns
- usability concerns
Classroom work will consist of lecture, discussion, and lab experimentation. Written work will consist of several homework and programming assignments, one exam, and a significant project.
After taking this course, you should be able to
- author sophisticated HTML pages using CSS
- describe the distributed architecture of web applications
- design and develop a significant web application using server-side technologies, such as Java servlets and JSPs
- understand the requirements (e.g., security, stability, reliability, performance, usability) of web applications
- apply common software tools to developing web applications
- test and debug web applications, using standard tools (e.g., the Eclipse IDE, Web Tools Platform) and systematic techniques
Office: Parmly Hall 410
Office Hours: MTRF 3:30-4:30 p.m.
Phone Number: (540) 458-8309 (it is better to email me than to call)
CSCI 335, Section 01
Lecture: MTRF 1:25 p.m.-3:25 p.m., TR 10:10 a.m.-12:10 p.m.
All are optional:
- Programming the World Wide Web, Seventh Edition, Robert Sebesta. If you prefer, you can get a 180-day online subscription instead of buying the book. Click on "Preview this text online!".
- Head First Servlets & JSP, available from Safari Books Online
- It is very important that you attend lectures (see Grading below). There will be considerable information given in class that is not available elsewhere. Family and medical emergencies and conflicts with University-recognized extra-curricular activities are the only reasons to request that work be rescheduled.
- You are expected to arrive to lectures promptly.
- Please turn off cellphones.
- Actively participate in the class by asking and answering questions.
- Check your W & L email frequently and check this web page and the schedule for new information.
- Throughout this class (and life in general), keep in mind a cowboy's wisdom: "Good judgement comes from experience." You may ask, "How do I get experience?" Bad judgement works every time. My point? Don't be afraid to make mistakes in this class, but make sure you learn from them!
- Use the Web to find solutions to some of your problems. Document where you found the code.
I will try to make this course and its material as exciting for you as it is for me. I will be respectful of student questions and misunderstandings. I will give prompt, constructive feedback from assignments. I will be available during office hours and by appointment. I will do my best to respond to questions via email within 24 hours.
You may discuss individual programming assignments informally with other students. However, sharing a solution, in the form of experimental results or the design or implementation of a program, is an honor violation. Students should know where to draw the line between getting legitimate outside assistance with course material and outright cheating. Students who obtain too much assistance without learning the material ultimately cheat themselves the most. If you have any uncertainty about what this means, consult with me before you collaborate. All written assignments should be done individually.
Participation and attendance
To receive full credit for class participation and attendance, you must have less than three unexcused absences from class and you must be actively engaged in the classroom by answering and asking questions each class when appropriate and by being respectful of other students. The average grade for participation is a B-.
The schedule, including important dates, is posted at the beginning of the semester. You should plan accordingly. If there are acceptable conflicts, tell me at the beginning of the semester and then remind me about a week in advance.
If you cannot make an exam, you must arrange a time prior to the scheduled exam to take the exam. If you miss the exam period, you will receive a 0 for the exam. If you are ill, you must email me with a phone number where you can be reached and speak with me in person. An email informing me that you are not taking the exam is NOT acceptable. In fairness to your peers taking the exam early or at the scheduled time, you must provide a note from the health center.
General grading policies
Programs turned in with syntax errors will receive no credit. "Roll back" your program (using version control management software) into a state where it does not have syntax errors.
All assigned work is due on the date specified. Any assignment turned in after the due date/time but on the same day will be penalized 10%. Any assignment turned in after the day on which it is due will be penalized an additional 10% for each late day. No assignment will be accepted that is more than three school days late. If you turn an assignment in late, you must indicate this somehow (in comments, on paper, etc.).
Grades for the course will be computed as follows:
- (42%) Individual programming and homework assignments, including but not limited to:
- Static HTML/CSS development
- Evaluation of usability, functionality of web sites/applications
- Analyzing open-source code
- Analyzing bug reports in open-source code
- Analyzing security threats
- Comparing Java Servlets/JSPs with another server-side programming language
- Reading/discussion assignments
- (15%) Midterm Exam
- (38%) Group Project
- (5%) Participation and attendance