CIS 422/522 Software Methodologies
Spring 2018
Syllabus
Tuesdays and Thursdays, 10 AM - 11:20 AM
Tues & Thurs, 10AM-11:20AM, B040 Price Science Commons
CRN: 31523 (for 422), 31537 (for 522), 4 Credits.
Web Pages: https://classes.cs.uoregon.edu/18S/cis422/
Overview
Instructor
Anthony
Hornof, Associate Professor
356 Deschutes
hornof@cs.uoregon.edu
Office Hours: Tues and Thurs noon-1PM, by appointment
The Point of the Course
"Software is coming onto center stage as the key empowering technology of the Information Age. Without software, one cannot enter or exit the information superhighway. Without software, a Cray supercomputer is a rather expensive loveseat and a Powerbook laptop is a rather expensive paperweight. If their software is bungled, our cars, radiation therapy machines, bank accounts--and we ourselves--can get into big trouble." (Barry Boehm, in Software Engineering, edited by Dorfman and Thayer, 1997, IEEE Press.)
In this course, you will learn methodologies and practices for building software systems that are adaptable, robust, reliable, and usable. The development of such systems require the cooperation and participation of a number of people working as a team. This class will help you to learn how to work effectively on a team. You will learn structured approaches for analyzing systems requirements, specifying software design, testing systems, and managing the software development process.
Textbook
Hans van Vliet, Software Engineering: Principles and Practice, 3nd edition, John Wiley & Sons, 2008.
Your Responsibilities
Read
You are expected to purchase a copy of the book, read the assigned chapters before class, and come to class ready to discuss those chapters with questions about what you read. You are expected to take notes on what you read, understand the material, and to look up words that you don't know in a dictionary.
Attend Class
You are expected to maximize the teaching and learning opportunity by attending lectures and labs. You are expected to schedule other commitments to avoid conflicts with the course. The only acceptable excuses for missing a class are documented medical problems, religious holidays (if cleared in advance), attending academic conferences (if cleared in advance), and documented personal emergencies. If you miss a class, you are expected to contact your classmates to try to acquire the knowledge, guidance, and materials that you sadly missed in that class. The instructor will not be able to provide makeup lectures or materials.
Participate in Class
Students are expected to attend all lectures, presentations, and scheduled meetings with the professor, and to take handwritten notes at all classes and meetings. Bring paper and pencil to class. Students are expected to participate in class presentations and discussions. User interface design is an iterative process, often involving group discussions of design alternatives. The instructor may present work submitted by students to the class for critique and discussion. Your in-class participation may be supplemented by emailing the instructor with questions or comments, which he will try to incorporate into lectures.
Come to class ready to engage the material and to interact face-to-face with the other human beings in the classroom. Power down and put away all electronic devices before class starts. Activities such as texting, surfing the web, or checking email during class is inappropriate, discourteous, and distracting to other students and the instructor. Please use lecture time to practice your skill of pondering.
Program Computers
Students are expected to start the class proficient in Python. If you are not proficient in Python, then you will need to spend substantial time beyond the typical allocation of time for projects in this class in order to complete the programming projects for this class. Students are also expected to know how to compile, run, and install C projects such as Port Audio. This would include understanding, working with, and setting Unix paths and environment variables; working with and compiling using make files; determine what is your current Unix shell.
Maintain Computing Resources
For this course, you are expected to have either (a) a computer of your own on which you can run Python 3 or (b) a USB flash drive such that you can use the computers in Room 100 in a time-effective manner. If you are using a personal computer, this computer should have at least 3 GB of hard drivespace available for this class, and a up-to-date operating system. You should have basic system administration skills for your system, such as to be able to and install and configure software, and to maintain and troubleshoot the computer. Students are expected to maintain secure and reliable backups of all of there coursework such that (a) other students cannot access that data and (b) multiple independent copies of all important files are kept on independent geographically-separated drives.
Group Projects
There will be two group projects. The first will last four weeks and be assigned by the instructor. The second will last four weeks and will be proposed by the groups. The second project will be due during the final week of classes. For the first project, the instructor will assign the teams. For the second project, students may be permitted to select their own teams.
Take the Exams and Quizzes
There will be a final exam in the time slot allocated on the UO final exam schedule. Pop quizzes and in-class exercises may further supplement learning and assessment. An unexcused absence at an exam, quiz, or in-class assignment will result in zero points for that assessment opportunity. During exams, students may not continue to work on the exam after the student left the room.
Utilize Course Materials
There two websites associated with this class:
- The CIS web page, at https://classes.cs.uoregon.edu/18S/cis422/
- The Canvas web page.
Students in this class are expected to check Canvas for announcements daily. It appears as if you can have these announcements sent to you as email by issuing these command in Canvas: "User Settings / Notifications / Announcement / Notify me right away."
Communicate Questions and Concerns
Please contact the instructor with any questions and concerns at all regarding the class, following these guidelines:
- Follow the UO Information Services netiquette guidelines.
- Check your @uoregon.edu and @cs.uoregon.edu email accounts daily, consistent with the Registrar's email policy.
- Send all course-related emails from your UO email accounts, also consistent with the Registrar's email policy. You should also email from your UO email accounts to clearly distinguish your email from spam. SpamAssassin filters out a lot of email from non-.edu domains.
- If you have a problem with spam on your @cs.uoregon.edu account, use SpamAssassin.
- If necessary, you can forward your cs.uoregon email and/or forward your uoregon email.
- Configure your email client so that your first and last name appear in the "From:" header. Send an email to yourself and make sure your full name (such as "Anthony Hornof") appears in the "From:" header.
- In the subject line of your emails, include "443" or "543" and describe the topic in a few words.
- Keep signature files to a minimum.
- Do not send advertisements.
Students have the responsibility to communicate with the instructor about any questions, concerns, or problems that they have during the course. These might relate to any aspect of the class including lectures, group dynamics, communication breakdowns, or anything. Please visit the instructor during his office hours or set up an appointment to discuss any problem or concerns.
Students in CIS 522
Graduate students (enrolled in CIS 522) will have additional responsibilities including reading and responding to a few articles on software engineering. Graduate students will be held to a higher expectation of quality in projects and exams.
Grades
Assessment Units
Grades will be determined based on your performance on the following assessment units: projects, exams, quizzes, and in-class exercises. If any of the projects (or other assessment units) are assigned and executed as a group project, your grade for that project will be based on the group's performance for that project.
Your final grade will be weighted across the assessment units as follows:
Project 1: 25%
Project 2: 30%
Midterm: 20%
Final Exam: 20%
Class Participation and Quizzes: 5%
Each Project and Exam Will be Graded to a Criterion Set for that Project or Exam
The course will be graded in a manner that does not limit the number of good grades (such as As and Bs) that will be awarded, and may result in nobody getting a bad grade (such as a D or an F). You will be graded based on the extent to which you have mastered the material that is assessed in each project or exam, with the highest possible level of mastery for each project and exam determined by the top 10% of the overall scores that students receive for that project or exam. For example, if the top two scores on an exam in a class of 20 students are are 75% and 85%, then the criterion will be set at 80%. And the scores for all students in the class for that project will be scaled up as if 80% correct counted as 100% correct. If you scored a 76%, your score will be scaled up to a 95% (76 / 80 = 95), and you got an A on that exam. The scaling will be assigned to each assessment unit in the class, with a separate numerical criterion determined for each unit.
After scores are scaled up, letter grades will be assigned as follows:
90% and higher = A
80-89.9% = B
65-79.9% = C
50-64.9% = D
49.9 and below = F
For grades of A, B, and C, scores in the top third of each range will receive a "+" and the bottom third a "–".
In addition, in order to pass this class:
- Your average grade across the two midterm exams must exceed 65/100 (i.e., cannot be an "D").
- Your contribution to the team effort based on the number and quality of artifacts, attendance at team meetings, and peer reviews must (in the instructor's judgement) meet or exceed a C-.
Late Assignments and Grading Discrepancies
Assignments submitted late will be subjected to a full letter grade penalty (10% after the score is scaled up). Assignments will be accepted no more than 48 hours past the due date and time. Exceptions will only be considered if the request is submitted before the due date. Any grading discrepancies (such as a miscounting of points on an assignment) must be resolved within a week after the assignment is returned.
Assessment of Work
Evaluation Criteria
Projects will be assessed against a set of evaluation criteria that will be made available with each project. Read these criteria carefully because they reflect the aspects of the projects that are important given the pedagogical goals of the class.
Subjective Assessment
While much in the discipline of computer science is objective (such as whether a computer program will compile and produce a specified answer), most of the material that covered in this class will be concepts, ideas, terminology, conventions, and practices that cannot be defined in pure objective language such as that of a computer program. Exams, quizzes, and projects are graded based on the instructor's subjective assessment of the accuracy and completeness of the answers and materials provided by the students.
The instructor will apply an understanding of the material that he has established (a) with first-hand experience interacting with the concepts and ideas covered in the class over five years of professional software industry and eighteen years of managing funded research projects in academia, (b) writing funding proposals that have won almost $3 million in funding from federal agencies, (c) serving as a program director at the National Science Foundation for two years during which he contributed to decisions to award roughly $50 million of federal funding on topics discussed in the course, (d) reviewing proposals for federal agencies including NSF and NASA who specifically requested his expert evaluations of the feasibility and technical merit of submissions, (e) extensive reading on the material covered in the course, and (f) extensive discussions with practitioners and researchers who specialize in the topics of the class.
Good Writing
Projects will be evaluated in part based on the instructor's subjective assessment of the quality of the written materials submitted. A modern skilled technology expert must be able to communicate his or her ideas clearly and concisely. Good writing occurs on three levels:
- Structure a paper so that the main ideas are clearly accessible. State the main point of the paper in the introduction. Start each paragraph with a topic sentence. Break the paper into sections and give each section a title. Summarize your major findings in a conclusion. A storytelling approach is not a good organizational style.
- Communicate individual ideas effectively. Be thorough but concise. The tone of your writing should be serious and direct, as if you were reporting to your boss at a real job. An informal "chatty" style is not appropriate. Every figure (graph, drawing, or screenshot) must be relevant, should have a caption that explains what it is and why it is important, and should be referred to in the main body of the text.
- All spelling and grammar must be standard and correct.
If you have any doubts about, or if you receive criticism regarding, the quality of your writing, strive to improve it. Take writing classes, study books such as Kane's New Oxford Guide to Writing and Strunk & White's Elements of Style, and access the drop-in writing tutoring at the Teaching and Learning Center.
Each artifact, document, and text file that you submit should include, at the top of the file, the names of all authors, and the date that the document was created or last modified.
Modern writing standards advocate the use of inclusive language, and you should follow this standard. For example, if you are referring to a single anonymous person, you should write "he or she," "the user," or "the programmer" rather than just "he." Also, refer to women as "women" and not "girls" or "ladies". People with disabilities and people who are elderly should be first recognized as people, and then by their distinguishing characteristic. For example, "people with disabilities" is preferred over "disabled people" and "people who are elderly" is preferred over "elderly people".
Good Media
Any media that is submitted as part of coursework should be of good quality. Photographs should be sharp, properly exposed and cropped, and communicate what needs to be communicated. Videos should be the same, and with a stable image (such as by using a tripod), clear audio at good volume levels, and edited to remove extraneous content. Data files should be only as large as is needed to deliver the relevant content.
Course Policies
Diversity Welcome
The modern technology workplace is diverse, international, and intercultural. This course welcomes and values these differences as an opportunity to increase our awareness of the contemporary global society, how to work better in groups, and how to build better computer systems.
Students with Disabilities
If you have a documented disability and anticipate needing accommodation in this course, please provide the instructor with your letter of accommodation from the UO Accessible Education Center during the first week of classes. He will advise the AEC on how to best provide this accommodation. You may also provide the instructor with additional written information regarding your situation, either on paper or electronically. Please allow a week for the implementation of your accommodation.
Corequisite
If you have not completed CIS 315 in a previous term with a grade of C- or better, or if you are not taking CIS 315 this term, you will not receive credit for this course.
Recording
Please do not make audio or visual recordings of the class without instructor permission.
Academic Honesty
Students who are found to have committed an academically dishonest act in this course will receive an F for the course.
Academic honesty includes the following. You should do all of the following:
- Clearly list each person and his or her contribution to any project or exam. Include this information in all documents that are submitted, and in the header of all affected source code files. The contributor might be a tutor, roommate, officemate, fellow student, or any other person that contributed in any way to your work.
- Clearly identify and delimit any content (such as written text, computer code, photographs, videos, and sounds) that are derived from another source, published or unpublished, with the original source and author indicated very clearly in the computer code, user interface, and documents.
- Protect your own work and insure that other students cannot obtain and use your solutions without attribution. Do not put your solutions on a web site with no password protection, even if no other pages point to this web page.
Academic dishonesty includes the following. You should not do any of the following:
- Misrepresent someone else's work, including anything you find on the web, as your own work, or in any way contributing to such a misrepresentation.
- Submit someone else's work as your own without indicating the source.
- Knowingly or accidentally make your work available to another student such that they can submit your work as their own.
All evidence of academic dishonesty will be pursued following the UO Faculty Guide for Addressing Academic Misconduct.
Changes to the Syllabus
Students will be notified in writing of any changes to the syllabus.
Acknowledgments
This course is modeled, in part, after previous versions of the course taught by Professors Stuart Faulk and Michal Young.
A.Hornof 4/3/2018