It is estimated that Windows XP has 50,000,000 lines of code. The average mobile phone has over 10 million lines of code. The average developer writes 10 – 20 useful lines of code per day, so a couple of engineers and 2 friends could break away, start a new company, and create a new “Windows” operating system in only about 1700 years. That’s not reasonable.
Up until now, most of the programs that you have been asked to write could probably fit in your mind. Many could be written in a way similar to writing a letter. When you complete the letter, you fold it, seal it up, and mail it off (or hit send). But now it is plain to see that products that you use daily simply could not be recreated by you and 10 of your best friends in an afternoon, weekend, or semester. A 1700 year project is wildly unreasonable. There must be a better way.
In this course, you get to learn a better way. You will dive into the world of software engineering and hone your teamwork (and, yes, coding) skills. Teamwork is critical, and software design methodologies are worth their weight in code. Learning these methods of working together, managing requirements, producing products, testing, delivering, maintaining is every bit as valuable as coding.
Why I Teach This Course
This course offers you a unique experience, and here is why I teach it:
- Building software is fun and rewarding
You get many opportunities to “learn by doing” this course - There’s more to software than coding
You will get a taste of software engineering - Working on teams can be messy, but it’s worth it
You will be amazed at what you can accomplish together
In this syllabus, you will find general information for the course (meeting times, textbooks, etc), grading, course policies, and a schedule. All information (including lecture notes, resources, assignments, etc.) will be posted on Canvas. Any necessary changes or updates to this syllabus will be done in Canvas under Syllabus.
Course Information
Course Description:
Intensive programming experience that integrates core concepts in Computer Science and familiarizes with a variety of programming/development tools and techniques; students work on 2 or 3 month-long projects each emphasizing a different specialization within Computer Science; focuses on programming techniques to ease code integration, reusability, and clarity.
Credits: 3 (2 Lecture Hours, 2 Lab Hours)
Special Designation: W (writing intensive course), you must pass the writing components to earn a grade in the course
Prerequisites: CSCE 312 and CSCE 314; or CSCE 350/ECEN 350
Corequisite: CSCE 313
Term: Fall 2020
Class Meetings:
Lecture:
All Lectures are remote Zoom lectures, Tuesdays, and Thursdays 11:30 – 12:45.
Lab:
Section 901: Zachry Engineering Education Complex 310, Mondays and Wednesdays 8:00 – 8:50 AM
Section 902: Zachry Engineering Education Complex 311, Mondays and Wednesdays 9:20 – 10:10 AM
Sections 903: Zachry Engineering Education Complex 210, Tuesdays and Thursdays 6:45 – 7:35 PM
Sections 903: Zachry Engineering Education Complex 218, Tuesdays and Thursdays 6:45 – 7:35 PM
The course is listed as a 2-hour per week lecture, and 2-hour per week lab, however it has been intentionally scheduled for 3 hours per week of lecture (along with the lab). We will meet approximately 2/3 of the lecture periods over the course of the semester. We will “front-load” these lectures in the earlier part of the semester to cover material that might be useful when working on the programming projects. We will spend less lecture time during the project periods themselves. This time is used for project meetings with the professors and TAs.
If attending remotely, you must have a computer, webcam, microphone, and stable internet connection (with phone backup). You must use the name you go by and your last name on the video conferencing system. You may be asked to have your webcam turned on for portions of the class. This allows everyone to be fully engaged in the classroom community.
Instructor:
Robert Lightfoot
rob.light+csce315 at cse.tamu.edu
328D HRBB
Student Hours: Zoom, times TBD
Teaching Assistants:
TBD
Required Textbooks:
Code Complete, 2nd edition by Steve McConnell (Microsoft Press, 2004).
pdf version available
Database Design, 2nd edition by Adrienne Watt (BCcampus Open Education, 2014).
pdf version available
Other supplementary material as needed will be supplied electronically.
Learning Outcomes:
This course is intended to be an intensive programming experience that integrates core concepts in Computer Science and familiarizes students with a variety of programming/development tools and techniques. Students will primarily work in small teams on month-long projects emphasizing different specializations within computer science. The course focuses on honing good programming techniques to ease code integration, reuse, and clarity. The primary goal for this class is to have students emerge with strong programming skills, able to address both individual and team programming challenges competently. The class is meant to allow students to improve their programming skills through significant practice.
After this course you will:
- appreciate the need for software engineering
- understand the fundamental concepts of software construction through practicing its various steps (including managing requirements, design, implementation, testing, deployment, and maintenance)
- have developed strong programming skills
- have gained experience with a variety of software development tools and techniques and gain exposure to currently used technologies
- have advanced your teamwork skills in the context of software development
- have matured your technical communication and writing skills (this is a writing-intensive course)
We will cover many topics including:
- Style considerations in writing code
- Design of software systems and APIs
- Coding beyond the single component
- Design for portability, performance, testability
- Specification and documentation
- Basic software tools and their use
- Subject-specific topics related to the team projects (DB, HCI)
Though many topics will overlap, this course is not intended to be as in-depth or comprehensive as a standard software engineering course, which focuses more on project management. You may take the software engineering class after taking this class.
Grading
Grading Components
Grades are determined from 5 different components:
Team Projects – 50%: Two major projects, each one worth 25% of grade each, for 50% total. Specific grading practices for each project will be announced when that project is given out, but the grade may include factors such as evaluation of code clarity, teamwork, etc., in addition to actual performance of the code. Peer evaluation (mainly with-in teams and in some cases from outside) will be used as a significant contributing factor to these grades.
In addition, team projects will include instructed and evaluated writing components that will contribute to the written component, as described below.
Individual Project – 10%: The individual project will be completed prior to the team projects. It will be graded both on correctness and on style of code. Specific grading practices will be announced when the assignment is given out.
You will be required to submit 100-word peer reviews for each of 3 other students’ projects. Your project will not be graded or considered complete until you have given your peer reviews.
Written Project – 20%: This is a writing-intensive course. You will compose a written report on a topic in software engineering. You will then update your report based on peer-feedback. Specific grading practices will be announced when the assignment is given out.
To receive C credit for this course, you must pass the course writing components.
In-Class Activities – 15%: We will use different types of activities to help you better understand concepts and connect with the material. These activities bring deeper, longer-term learning as you work through problems, either individually or with other students. Grading will be based on the quality of the submitted group work. Your participation is required for these activities.
Attendance and Participation – 5%: The purpose of this grade is to ensure that everyone stays available to their team and active throughout the course. It may be based on both attendance and participation in class. It will be monitored through instructor/TA observation and Zoom activity. Attending all lectures and labs, either in person or remotely, will result in additional points being awarded. Missing a lecture or lab in more than half the weeks will result in no points awarded for this grade.
Grading Scale:
Grades will be assigned according to the following scale:
% Total Points | >= 90 | >= 80 | >= 70 | >= 60 | < 60 |
Letter Grade | A | B | C | D | F |
You must pass the writing components to earn a grade in the course.
In addition to this, the instructor reserves the right to provide a relative or absolute curve to the final class grade (note that such a curve has not always been applied, and should not be assumed). Also, the instructor may raise the grades of any students very near a borderline based on a subjective evaluation of class participation and effort.
University and Course Policies
Attendance Policy:
The university views class attendance and participation as an individual student responsibility. Students are expected to attend class and to complete all assignments. Please refer to Student Rule 7 in its entirety for information about excused absences, including definitions, and related documentation and timelines.
Attendance is expected in the course and will be recorded in both lectures and labs. 5% of the course grade will be based on attendance, and absences may negatively affect the grade. It is particularly important to attend lab sessions since this will often serve as a team meeting time for your project work. In addition, students may miss in-class activities, which will not be made up without prior approval. Note that remote students are still required to attend class online sessions and participate in in-class activities.
Makeup Work Policy:
Students will be excused from attending class on the day of a graded activity or when attendance contributes to a student’s grade, for the reasons stated in Student Rule 7, or other reasons deemed appropriate by the instructor. Please refer to Student Rule 7 in its entirety for information about makeup work, including definitions, and related documentation and timelines.
Absences related to Title IX of the Education Amendments of 1972 may necessitate a period of more than 30 days for make-up work, and the timeframe for make-up work should be agreed upon by the student and instructor” (Student Rule 7, Section 7.4.1).
“The instructor is under no obligation to provide an opportunity for the student to make up work missed because of an unexcused absence” (Student Rule 7, Section 7.4.2).
Students who request an excused absence are expected to uphold the Aggie Honor Code and Student Conduct Code. (See Student Rule 24.)
If you know you are going to miss a class or assessment, please let the instructor know ahead of time. If an absence is excused (see Student Rule 7), the instructor will either provide you an opportunity to make up any work that contributes to the final grade or provide a satisfactory alternative by a date agreed upon by you and instructor. You are responsible for providing satisfactory evidence to the instructor to substantiate the reason for the absence. Falsification of documentation is a violation of the Honor Code. Other absences may be excused at the discretion of the instructor with prior notification and proper documentation. In cases where prior notification is not feasible (e.g., accident or emergency) you must provide notification by the end of the second working day after the absence, including an explanation of why notice could not be sent prior to the class. Accommodations sought for absences due to the observance of a religious holiday can be sought either prior or after the absence, but not later than two working days after the absence.
Bring Your Own Device:
BYOD is an initiative in the college of engineering where students are required to bring their own computing device to class. Students need to have a computer or laptop with stable internet access, microphone, and webcam. Students also need a smartphone as a backup in the case of a network outage. See the BYOD webpage for information on the program, approved devices, and financial assistance. BYOD devices fulfill the requirements for this class.
Communication:
We will use Canvas to post assignments, course resources, and send announcements. It is your responsibility to check Canvas and pay attention to class emails.
We will use CampusWire for discussion this semester. The quicker you begin asking questions there (rather than via emails), the quicker you’ll benefit from the collective knowledge of your classmates and instructors. You are encouraged to ask questions when you’re struggling to understand a concept — you can even do so anonymously to the class. Please keep the discussion professional, helpful, and within the guidelines of our course’s agreed-upon etiquette guide (found on Canvas).
Submissions of Assignments:
All assignments will be turned in electronically through Canvas (unless otherwise specified) by the due date and time given on the assignment. Email submissions will not be accepted.
A key part of this class is understanding the importance of clear code construction and documentation. Therefore, when assignments are graded, a significant portion of the grade may be based on an evaluation of how well the code is written, and how easy it is to follow. Just producing code that “works” is not sufficient; it will be your responsibility to produce code that the grader can follow. This includes both style of code writing as well as documentation of code.
Late Policy:
Assignments turned in after the posted deadline will have a penalty applied of 10% per day late. For team assignments, this affects the grade for the entire team. If the assignment is individual, it will only affect the grade for that team member.
Academic Integrity Statement and Policy:
“An Aggie does not lie, cheat or steal, or tolerate those who do.”
“Texas A&M University students are responsible for authenticating all work submitted to an instructor. If asked, students must be able to produce proof that the item submitted is indeed the work of that student. Students must keep appropriate records at all times. The inability to authenticate one’s work, should the instructor request it, may be sufficient grounds to initiate an academic misconduct case” (Section 20.1.2.3, Student Rule 20).
You can learn more about the Aggie Honor System Office Rules and Procedures, academic integrity, and your rights and responsibilities at aggiehonor.tamu.edu.
- Definitions of academic misconduct which includes plagiarism.
- List of sanctions that can be applied if academic misconduct is found.
For this class, certain aspects of the honor code need to be clarified.
- There will be times in this course where you or your team make use of external code/software/libraries. Whenever this is done, you must make sure that you:
- Follow any licensing and/or use restrictions that library/code requires
- Clearly document what the source of the external code was, and how it was used
- There may be cases in this course where you or your team seek outside assistance related to one of the projects. Any assistance received from people other than members of your team, the professor, teaching assistants, or peer teacher needs to be clearly documented.
- You will be working in team environments in this course, and your work as a team will be used to determine grades. As such, it is your responsibility, when asked, to:
- accurately describe the work that you have done on a team project. Claiming credit for work that you have not done or that others did instead is a violation of the honor code.
- accurately describe (to the best of your knowledge) the performance of other team members. “Covering” for another team member (claiming they did more work than you know they did, or exaggerating the work they did) or “spiking” them (claiming they did less work than you know they did or purposefully minimizing the work they did) are examples of honor code violations.
- prevent (as best you can) or report (known or suspected) violations of the honor code by your other team members. You share responsibility when a project is turned in; if you are aware of a teammate having violated the code in his/her work on the project, and do not report it, you are claiming credit for that violation yourself.
If there are any questions or concerns about whether an action is appropriate, you should check with the professor or teaching assistant first. If in doubt, assume that it is not appropriate.
Americans with Disabilities Act (ADA) Policy Statement:
Texas A&M University is committed to providing equitable access to learning opportunities for all students. If you experience barriers to your education due to a disability or think you may have a disability, please contact Disability Resources in the Student Services Building or at (979) 845-1637 or visit disability.tamu.edu. Disabilities may include but are not limited to attentional, learning, mental health, sensory, physical, or chronic health conditions. All students are encouraged to discuss their disability-related needs with Disability Resources and their instructors as soon as possible.
Title IX and Statement on Limits to Confidentiality:
Texas A&M University is committed to fostering a learning environment that is safe and productive for all. University policies and federal and state laws prohibit gender-based discrimination and sexual harassment, including sexual assault, sexual exploitation, domestic violence, dating violence, and stalking.
With the exception of some medical and mental health providers, all university employees (including full and part-time faculty, staff, paid graduate assistants, student workers, etc.) are Mandatory Reporters and must report to the Title IX Office if the employee experiences, observes, or becomes aware of an incident that meets the following conditions (see University Rule 08.01.01.M1):
- The incident is reasonably believed to be discrimination or harassment.
- The incident is alleged to have been committed by or against a person who, at the time of the incident, was (1) a student enrolled at the University or (2) an employee of the University.
Mandatory Reporters must file a report regardless of how the information comes to their attention – including but not limited to face-to-face conversations, a written class assignment or paper, class discussion, email, text, or social media post. Although Mandatory Reporters must file a report, in most instances, you will be able to control how the report is handled, including whether or not to pursue a formal investigation. The University’s goal is to make sure you are aware of the range of options available to you and to ensure access to the resources you need.
Students wishing to discuss concerns in a confidential setting are encouraged to make an appointment with Counseling and Psychological Services (CAPS).
Students can learn more about filing a report, accessing supportive resources, and navigating the Title IX investigation and resolution process on the University’s Title IX webpage.
Statement on Mental Health and Wellness:
Texas A&M University recognizes that mental health and wellness are critical factors that influence a student’s academic success and overall wellbeing. Students are encouraged to engage in proper self-care by utilizing the resources and services available from Counseling & Psychological Services (CAPS). Students who need someone to talk to can call the TAMU Helpline (979-845-2700) from 4:00 p.m. to 8:00 a.m. weekdays and 24 hours on weekends. 24-hour emergency help is also available through the National Suicide Prevention Hotline (800-273-8255) or at suicidepreventionlifeline.org.
Campus Safety Measures:
To promote public safety and protect students, faculty, and staff during the coronavirus pandemic, Texas A&M University has adopted policies and practices for the Fall 2020 academic term to limit virus transmission. Students must observe the following practices while participating in face-to-face courses and course-related activities (office hours, help sessions, transitioning to and between classes, study spaces, academic services, etc.):
- Self-monitoring: Students should follow CDC recommendations for self-monitoring. Students who have a fever or exhibit symptoms of COVID-19 should participate in class remotely and should not participate in face-to-face instruction.
- Face Coverings: Face coverings (cloth face covering, surgical mask, etc.) must be properly worn in all non-private spaces including classrooms, teaching laboratories, common spaces such as lobbies and hallways, public study spaces, libraries, academic resource, and support offices, and outdoor spaces where 6 feet of physical distancing is difficult to reliably maintain. Description of face coverings and additional guidance are provided in the Face Covering policy and Frequently Asked Questions (FAQ) available on the Provost website.
- Physical Distancing: Physical distancing must be maintained between students, instructors, and others in course and course-related activities.
- Classroom Ingress/Egress: Students must follow marked pathways for entering and exiting classrooms and other teaching spaces. Leave classrooms promptly after course activities have concluded. Do not congregate in hallways and maintain 6-foot physical distancing when waiting to enter classrooms and other instructional spaces.
- To attend a face-to-face class, students must wear a face covering (or a face shield if they have an exemption letter). If a student refuses to wear a face covering, the instructor should ask the student to leave and join the class remotely. If the student does not leave the class, the faculty member should report that student to the Student Conduct Office for sanctions. Additionally, the faculty member may choose to teach that day’s class remotely for all students.
Personal Illness and Quarantine:
Students required to quarantine must participate in courses and course-related activities remotely and must not attend face-to-face course activities. Students should notify their instructors of the quarantine requirement. Students under quarantine are expected to participate in courses and complete graded work unless they have symptoms that are too severe to participate in course activities.
Students experiencing personal injury or illness that is too severe for the student to attend class qualify for an excused absence (See Student Rule 7, Section 7.2.2.) To receive an excused absence, students must comply with the documentation and notification guidelines outlined in Student Rule 7. While Student Rule 7, Section 7.3.2.1, indicates a medical confirmation note from the student’s medical provider is preferred, for Fall 2020 only, students may use the Explanatory Statement for Absence from Class form in lieu of a medical confirmation. Students must submit the Explanatory Statement for Absence from Class within two business days after the last date of absence.
Operational Details for Fall 2020 Courses:
For additional information, please review the FAQ on Fall 2020 courses at Texas A&M University.
Schedule
Below is the proposed tentative schedule of topics and major projects for the course. Projects have incremental deliverables that will be communicated, along with their due dates, on Canvas. In-class activities are due by the end of each class session.
Students will also participate in labs each week which will cover topics relevant to the current course material and assignments.
Week | Date | Topic | Date | Topic | Individual Projects | Team Projects |
1 | 8/20/20 | Introduction | ||||
2 | 8/25/20 | Software Construction | 8/27/20 | Software Design and Professional Presence | Project 1
(final deliverable due 9/8/20) |
|
3 | 9/1/20 | Code as Communication and Commenting | 9/3/20 | Communication in Layout and Style | ||
4 | 9/8/20 | Software Development Process with a Waterfall Focus | 9/10/20 | Database Introduction | Project 2
(final deliverable due 10/6/20) |
|
5 | 9/15/20 | Team Success | 9/17/20 | Collaborative Development | ||
6 | 9/22/20 | Formal Inspections | 9/24/20 | Self Documenting Code | ||
7 | 9/29/20 | Testing, Debugging, and Refactoring | 10/1/20 | Personal Character | ||
8 | 10/6/20 | Agile | 10/8/20 | HCI and Accessibility | Project 3
(final deliverable due during finals time for class/lab) |
|
9 | 10/13/20 | Writing with a Purpose | 10/15/20 | Integration and Configuration Management | Project W | |
10 | 10/20/20 | Weekly Team Meetings | 10/22/20 | Weekly Team Meetings | ||
11 | 10/27/20 | Weekly Team Meetings | 10/29/20 | Weekly Team Meetings | ||
12 | 11/3/20 | Weekly Team Meetings | 11/5/20 | Weekly Team Meetings | ||
13 | 11/10/20 | Weekly Team Meetings | 11/12/20 | Weekly Team Meetings | ||
14 | 11/17/20 | Weekly Team Meetings | 11/19/20 | Weekly Team Meetings | ||
15 | 11/24/20 | Last day of classes | 12/1/20-12/9/20 | Final demonstration (day/time TBD) |