Course Description
CSC 326 - 001 Software Engineering is the application of product engineering methods to software; quality assurance, project management, requirements analysis, specifications, design, development, testing, production, and maintenance.
Course Objectives
Upon successful completion of this course, a student will be able to...
Write and execute a comprehensive black box test plan, write and execute white box tests, automate both black and white box tests, and conduct a software inspection.
Create a design for a small to medium object-oriented program and evaluate the quality of their design through heuristics and metrics.
Apply design patterns in creating a small to medium object-oriented program.
Create a software requirements document, including security and privacy requirements.
Explain the essential components of a software development process and how to devise a software development process appropriate to the project under development.
Work in small project teams to complete a medium-sized project.
Manage project tasks (a.k.a. project management) including risks associated with a medium sized project.
Describe and explain different types of software maintenance.
Course Structure
Attendance
Software Engineering may be considered an introduction to the profession. This class should be treated as a job. If you fail to show up to lecture or lab, you not only hurt yourself, but also your partner or the other members of your team. Success in CSC326 depends on making a commitment to attend all the lectures and labs.
Experience has shown that attendance is extremely important - both in lecture AND lab - for your success in CSC326. Lectures are organized so that the theoretical information about a topic is covered before you complete the associated activity in lab. The following strict attendance policy reflects this importance.
Labs
Students are required to attend one two-hour laboratory each week. Students must allow 15-30 minutes to read the lab assignment and complete a pre-lab (if required) before arriving at the lab. Attendance will be taken. All students are required to stay the entire two hours; because, the second half of most labs gives you time to work on the assignment/team project with your partner(s)/team. You will lose attendance credit if you leave early or arrive late without a documented university excused absence. Depending upon the lab, you will receive full credit for the lab by simply attending and participating. In other labs, your work will be graded or you will need to complete a post-lab assignment. This will be made clear on each lab assignment.
If you miss one unexcused lab, you will automatically lose 5 points of the 15 points allotted to labs; miss two unexcused labs and you will lose 10 points (one full letter grade); miss three or more unexcused labs and you will fail the course.
If you miss more than 20 minutes of lab without a documented excuse, you will lose 0.5 points of the 15 allotted to labs.
If you fail to complete the pre- or post-lab assignments for a given lab (if there are any), you will lose 0.5 points of the 15 points allotted to labs.
If you are absent from lab, with an excused university absence, you will be able to make up lab activities as decided upon by the instructor. It is your responsibility to attend office hours or arrange a meeting with the instructor to discuss lab make up activities.
Lecture
In each class, you may be presented with one to three exercises that consist of conceptual questions, short programming exercises, or just signing in that you were present. You are encouraged, but not required, to work on these exercises with another class member. At least one member of the pair or team will need to have a laptop computer, or other electronic device, such as a tablet, that can submit answers via a Google form if required by the exercise (some will be on paper). The exercises provide the opportunity to explore recently covered materials individually or with peers. The exercises are submitted so the instructor can get a feel for the class' comprehension of materials in a timely manner.
You must submit an answer for at least one exercise per lecture period to be counted as attending lecture for that day. Three unexcused absences will cause you to lose 5 points; five will lose you 10 points (one letter grade); six or more and you fail the course.
If you are absent from class, with a documented excused university absence, you will not be penalized for missing any exercises associated with the class.
Homeworks
Leading up to the Team Project, you will have (3) assignments. Homework 1 will count for 5%, Homework 2 is worth 6%, and Homework 3 will count 9%. Homework 1 will be an individual assignment. Homework 2 will be completed in a pair or team of 3. Homework 3 Parts 1 and 2 will be completed in a pair or team of 3 and Homework 3 Part 3 will be an individual assignment.
Team Project
A team project will be completed in groups of four or five students. This course is based on reality, so the project will be as real-world as we can make it.... which might just mean that some aspects of the project may intentionally cause you some heartache (such as ill-defined AND/OR changing requirements). Remember, it's for your own good.
During the team project, each team member will take on a leadership role for some aspect of the project development. However, all team members are also developers. As such, we expect that each team member will contribute to the team’s project by pushing a meaningful code change to the team’s GitHub repo. Any team member that doesn’t commit code for a given iteration without some team and management approved reason will lose points on their iteration grade for that week.
Additionally, we expect that 1) the master branch will stay green; and 2) there is at least one merge of development code to master at each iteration.
Exams
The midterm + final exam cover 45% of your final grade. Any unexcused absence from the midterm or final exam will result in a grade of 0 for the exam.
The final exam is cumulative.
No late entry to the exam period will be allowed after the first 30 minutes or after the first person leaves the exam, whichever comes first. Please be on time and note that the final exam is an 8am exam.
Time
This class requires a lot of work outside of class meeting times. You are expected to spend, on average, 8 to 15 hours per week outside of class preparing and working on assignments. In some weeks, especially those around project deadlines, you may spend more than 12-15 hours on course work. Please plan ahead and use your time wisely. Do NOT wait until the last minute to complete programming projects!!!
Minimum Grade Requirement
To pass CSC326, you must have a passing grade in the elements if the course that are completed individually. That is, you need to have a weighted average of 60% or higher on the following elements: Midterm (20%), Final (25%), Homework #1 (5%), and Homework #3 Part 3 (3%). You must also have a passing grade in the elements of the course that are completed collaboratively. That is, you need to have a weighted average of 60% or higher on the following elements: Homework #2 (6%), Homework #3 Parts 1 and 2 (6%), and the team project (20%).
Course Policies
Hardware/Software Support
The course programs will be done in Java, JSP, JSF, JavaScript, JQuery, XML, HTML, and using relational databases. Automated testing will involve several of the following technologies: JUnit, Selenium, and Cucumber. The course project will run on a Tomcat server with a MySQL database. Students will be provided with resources about these technologies as appropriate, but are expected to learn how to use the technologies on their own.
All course projects will be completed in the open-source Eclipse development environment. The development environment is available for use in the EBII Laboratory for Collaborative System Development / Multimedia Lab (EBII 1221) and is freely available for download for use on personal computers. Throughout the semester, we will use several Eclipse plug-ins. Tutorials will be provided for set up of Eclipse, associated plug-ins, and the course project on personal computers. The first lab will be available for setting up the development environment. If you choose to develop your assignments outside of the provided lab space, you MUST ensure that your assignments compile and run in the lab environments. If your code cannot compile and run on the lab machines, you will lose 10 points on the assignment grade.
All code submissions with be through NC State’s GitHub (github.ncsu.edu). The last submission before the assignment deadline will be graded. A continuous integration server, Jenkins, will be used to automatically build and run tests for grading. The Jenkins feedback does not have to be complete before the deadline (but you will likely want it to be so you can estimate your grade).
Computers and Electronic Devices
Students are encouraged to use computers and other electronic devices like tablets during lecture and may also bring them to lab. The teaching staff asks that students respect their neighbors and keep their focus on course materials rather than games, FaceBook, etc. Electronic devices are required for submission of exercises.
You may not record the lecture without express written permission from the instructor.
Professionalism
Students are expected to conduct themselves in a respectful and professional manner at all times. Students are expected to act professional both in person and electronically with all members of the teaching staff and their classmates. Communication, both written and verbal, should be respectful and should never include derogatory comments about yourself or others. All criticism (of yourself, the course, instructor, TAs, fellow students, resources, etc.) should be constructive.
Professionalism also includes attendance and participation. If you are unable to participate, please notify the teaching staff and your partner/team as soon as possible. If you have a missing partner/teammate, please notify the teaching staff as soon as possible.
Report any unprofessional behavior by any class member (including the instructor and TAs) to the instructor. Guidelines for electronic communication are listed in the section below.
Unprofessional electronic communication on course forums may result in suspension from the course forum and possible grade penalties. Unprofessional in-person behavior, including a lack of participation, will result in a conference with the instructor and possible grade adjustments for all involved parties.
Electronic Communication
The class will use Piazza for message board communications: piazza.com/ncsu/spring2017/csc326/home
The teaching staff looks forward to receiving emails and message board posts about any questions you have about the class, materials, exams, and assignments. Below are several rules for electronic communication. Higher education provides you with a training ground prior to entry into the work environment for your chosen career. You will use many of the following rules of "netequette" when you are communicating with colleagues, your supervisor, or clients once you are in the work world. Although many of the rules of etiquette for electronic communication will be similar in the work environment, we have some specific to this course. Please observe the following etiquette when communicating with the teaching staff and your peers. The teaching staff receives many emails on a daily basis and the instructor teaches several courses. Please note that a member of the teaching staff will respond to an email or message board within 24 hours on a business day and within 48 hours on a weekend or holiday. Most of the time, we will respond more quickly, but it is not guaranteed.
Before sending an email, try to find the answer to the question by using various references already available to you:
If the question is related to class administration, check the syllabus If the question is related to recent information, check previous emails from the teaching staff
If the question is homework or exam related, check the message board to see if it has already been answered.
Also, read your textbook.
For emails, please identify your course, section, and your name in the subject line (first and last name) along with the subject of the message. For example: "CSC216-002 Jenny Smith - Question about Homework 1".
Email should include a salutation to identify the recipients of the email. For example, begin an email to your instructor with a salutation such as "Hi Dr. Stolee," or "Dr. Stolee". For emails to the sup list, consider a salutation like "Greetings Teaching Staff,". You now have the attention of the email recipients. The tone of the email message should be professional. Re-read your email before you press Send and make a judgment as to how you would respond if you were a recipient of the email you are planning to send.If you have a question that is beyond the scope of an email, consider coming to office hours or scheduling an appointment with a member of the teaching staff. If you have several questions or items, please number them for ease of reading. The response will also be easier to understand. Please spell check and correct mechanical/grammar errors. Avoid emails written only in lowercase and lacking punctuation. Close your email with your name.
If you have a general question about a homework, post your question to Piazza. If you have a question that is more specific or that involves snippets of code, email it to the sup list: csc326-001-sup@wolfware.ncsu.edu
Grade Appeals
If at any time you feel an assignment was graded improperly, submit your appeal through the Grade Appeals form here. After submission, you will first discuss the appeal with your lab TA and then, if needed, with the instructor. All regrade requests must be submitted to the instructor no later than 2 weeks after the assignment was returned to you or for assignments returned within two weeks of the final, before the final exam time.
Prerequisites
CSC 230 and either CSC 314 or CSC 316
Class is restricted to Computer Science majors only
Required Materials
Textbook: An Introduction to Software Engineering - Laurie Williams
Edition: 1st (2013)
ASIN: B00E8NEKN8 (Kindle Edition – http://www.amazon.com/An-Introduction-Software-Engineering-ebook/dp/B00E8NEKN8/)
ISBN-10: 0989864014 (Paperback Edition - http://www.amazon.com/Introduction-Software-Engineering-Laurie-Williams/dp/0989864014/)
Cost: Kindle Edition $9.99; Paperback - $29.99
This textbook is required.
Grading Information
A weighted grade average will be calculated as follows:
The following grade scale will be used: A+ (97-100), A (93-96), A-(90-92), B+ (87-89), B (83-86), B-(80-82), C+ (77-79), C (73-76), C-(70-72), D+ (67-69), D (63-66), D-(60-62), F (below 60).
Homework Late Policy
The late window for each assignment will be posted in the assignment write-up. Some assignments may not have late windows. Assignments submitted late will receive a penalty as listed on the assignment write-up. No submissions will be accepted beyond the late window without a university excused absence.
Exercises will not be accepted late. You will not receive credit for an exercise if the timestamp is later than 5pm on the day the exercise was assigned.
No late submissions will be accepted through email.
Academic Integrity
Students are required to comply with the university policy on academic integrity found in the Code of Student Conduct found at http://policies.ncsu.edu/policy/pol-11-35-01
All work that you turn in for grading must be your own! This means that all work must be an independent and individual creation by you or in the case of paired/team assignments, all work must be an independent and individual creation by you and your assigned partner or assigned teammates. Any attempt to gain an unfair advantage in grading, whether for yourself or another, is a violation of academic integrity. You may only work on an assignment with another student(s) in the class if explicitly stated in the assignment. Pairings and teams will be assigned (with your input) for all collaborative assignments. You may collaborate with your partner and/or team for the collaborative portions of an assignment. However, collaborating with other pairs and/or teams is NOT allowed and is absolutely cheating.
Teams or individual students who cheat on a homework, project, exercise, or exam will receive a -100 for the assignment!!!
Cheating is worse than not turning in the assignment. All cases of academic misconduct will be reported to the Office of Student Conduct. A first offense will place the student on Academic Probation for the remainder of their academic career. A student's status on Academic Probation may affect financial aid and be reported to groups that request the information from the Office of Student Conduct, like Park Scholars, ROTC, graduate schools, employers, etc.
The Computer Science department uses software that detects cheating violations for programming projects. Do not use other student's code, do not share your code, do not copy or use code from someone who took the class X semesters ago, do not use code from online.
The only people that you MAY receive help from are your instructor, the TA(s) for CSC326, and for paired/team assignments, you may receive help from your assigned partner or your assigned teammates. For exercises, you may work with any of your neighbors that are physically present in class. You may use any of the resources provided by the teaching staff on the course website.
You MAY also reference your textbook, the textbook website, the Java API, and other third party APIs, and online references as appropriate for an assignment (for example, you may use the JUnit API to help you with writing JUnit tests). You MUST cite your sources.
You MAY NOT receive help from anyone or anything else.
Examples of Cheating (this list is NOT exhaustive):
It is cheating to give any student access to any of your work which you have completed for individual class assignments.
It is cheating AND plagiarism to use another person's work and claim it as your own. You are expected to complete all assignments on your own, unless otherwise specified in the assignment.
It is cheating to interfere with another student's use of computing resources or to circumvent system security.
It is cheating to email, ftp, post on the Internet, bulletin boards, message boards, etc. your work for others to obtain. Do NOT use sites that allow you to "anonymously" post code. Those sites are searchable, and others may find your code (like the teaching staff).
It is cheating to ask or pay another person or persons to complete an assignment for you.
It is cheating AND plagiarism to decompile any compiled code and use the decompiled source code as your own. You may also break the law by decompiling code.
It is cheating AND plagiarism to use code that you find online.
It is cheating to give another student access to your account (NC State account or others that you use for university work) or to give them your account password.
It is cheating for you and another student to work collaboratively on an assignment, unless otherwise specified by the assignment.
It is cheating to circumvent the intention of the assignment and/or the automated grading system (e.g., by hardcoding test case solutions).
Examples of NOT Cheating (this list is NOT exhaustive):
Using the code from the class website (with citations in the comments).
Using code from other programs YOU wrote.
Using code from other programs that YOU and a partner wrote as part of assigned exercises.
Help from TAs or instructor (with citations in the comments).
Using code from the textbook or textbook website (with citations in the comments).
Example Citations
/* (In method or class level comments)
* I received help from Dr. Williams on date during her office hours. We
* discussed X.
*/
/*
* The code for this method is based on Exercise Y that I completed with Z
* on date.
*/
Protecting Yourself
Do not leave papers lying around your workstation.
Do not dispose of important papers in the lab recycling bins and trash cans until after the assignment is graded.
Do not give out your password.
Do not leave your workstation unattended or forget to log yourself out.
Do not leave your laptop unattended.
Do not give other students access to any of your workspace or email them any code.
Do not give other students access to your course materials or your personal computer.
Do not email, ftp, or post your code on the Internet, message boards, etc.
Keep all copies of final and intermediate work until after the assignment is graded.
Keep all graded assignments until after you receive the final grade for the course.
Do not discuss implementation details of the assignment with your peers.
Forum Use
Piazza is available to ask questions about assignments and tests. Do NOT post any code to the forum! The teaching staff reserves the right to edit any student's forum post for inappropriate content.
Honor Pledge
Your name on any test or assignment or the electronic submission of an assignment through Moodle or other class courseware system indicates "I have neither given nor received unauthorized aid on this test or assignment."
Course Evaluations
Online class evaluations will be available for students to complete during the last two weeks of class (November X-December x). Students will receive an email message directing them to a website where they can login using their Unity ID and complete evaluations. All evaluations are confidential; instructors will never know how any one student responded to any question, and students will never know the ratings for any particular instructors.
Evaluation website: https://classeval.ncsu.edu
Student help desk: classeval@ncsu.edu (for evaluations)
More information about ClassEval: http://www2.acs.ncsu.edu/UPA/classeval/index.htm
Disabilities
Reasonable accommodations will be made for students with verifiable disabilities. In order to take advantage of available accommodations, students must register with Disability Services for Students at 1900 Student Health Center, Campus Box 7509, 515-7653.
For more information on NC State's policy on working with students with disabilities, please click here.
Supporting Fellow Students in Distress:
As members of the NC State Wolfpack community, we each share a personal responsibility to express concern for one another and to ensure that this classroom and the campus as a whole remains a safe environment for learning. Occasionally, you may come across a fellow classmate whose personal behavior concerns or worries you. When this is the case, I would encourage you to report this behavior to the NC State Students of Concern website: http://studentsofconcern.ncsu.edu/. Although you can report anonymously, it is preferred that you share your contact information so they can follow-up with you personally.