CS 340 Policies - Spring 2019
Prerequisites
Complete CS 236 and CS 240 with a passing grade (C- or better)
In this class we program in Java. You must already be a competent Java programmer in order to take the class.
This class is scheduled to meet three hours on MWF. The first two hours are for lecture. The third hour is for group meetings. By staying in the class, you assert that you are able and willing to meet all three hours. (The first few days we will have lecture all three hours so we can learn the material required to get started on the group project.)
If you do not satisfy these prerequisites, please drop the course.
Course Objectives
- Learn principles of effective software design
- Understand design patterns and their application
- Learn to effectively document and communicate software designs
- Learn basic concepts of software quality assurance, including technical reviews and software testing
-
Be exposed to a variety of software development tools, including:
- Integrated Development Environments (IDEs) (Android Studio)
- Source code control systems (Git)
- Automated testing tools (JUnit, Cobertura, Guice, EasyMock)
- Design documentation tools (LucidChart, Javadoc)
- Apply 1-5 on a significant software project
Class Participation
A portion of your grade in CS 340 will be based on class participation. Class participation includes some or all of the following components (depending on your instructor):
- Attending class, paying attention, participating
- In-class exercises and quizzes
- Being a good team member
Class attendance is required. CS 340 is heavy on group work, and you cannot be an effective team member if you are not in class. Some material is presented only in class, and is not covered in the readings. In addition, class is the primary forum for conducting administrative business. Changes to assignments, due dates, exam dates, etc. will be discussed in class. You will be accountable for all administrative information presented in class. If you miss class, it is your job to find out what announcements were made in your absence.
Technology Use in Class
We have learned by sad experience that technology is a major distraction to students in class, and prevents them from listening, participating, and learning as they should. Therefore, you may not use laptops, tablets, phones, or other technology during lecture. Notes may be taken using good old-fashioned paper and pen(cil). However, when you are working with your group or doing other non-lecture activities, you may use your technology as needed.Textbooks
The textbooks for the course are:
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, et. al.
- Refactoring: Improving the Design of Existing Code by Martin Fowler, et. al.
These books can be purchased at the BYU Store or online (e.g., Amazon.com). They will probably be significantly cheaper if you buy them online.
In addition to these textbooks, you will also read several online articles. Links to these articles are given in the course schedule.
Group Project
The central learning activity of the course is a large group programming project. This project will run the duration of the course, and will be completed by groups of 4 or 5 students. Information about the group project can be found at the following link:
The group project will be implemented in Java. The client portion of the project will be implemented as an Android application (but still in Java). The server portion of the project is a regular (i.e., non-Android) Java program. Both parts of the project can be implemented in the Android Studio IDE.
By now most students should have learned about Android programming in CS 240. If you did not take the Android version of CS 240, you will need to learn how to use Android Studio to develop Android apps, including the basics of Android programming. In addition to online Android programming resources, you might want to get a copy of the Android programming book used in CS 240, which is quite helpful. The book is:
Android Programming: The Big Nerd Ranch Guide (3rd Edition) by Bill Phillips, et. al.
While the client portion of the project will be an Android app, you are not required to own an Android device. The project can be done using the Android device emulators provided by Android Studio. Since the project is a multi-user network game, multiple devices are needed to test the program. Therefore, even if you own an Android device, you will probably still need to use device emulators in order to have enough clients to test your program. Additionally, your Android app will probably require a tablet-size screen to display the game's user interface, and might not be usable on a phone-size screen (although that will depend on your user interface design). So, even if you own an Android phone, it might not be useful for testing your app. Thus, the need for device emulators.
The CS Dept. lab machines can be used for Android development. However, for convenience you will probably want to configure your own computer for Android development. To do so, download and install the latest version of Android Studio.
Exams
There will be two exams (one midterm and one final exam).
NOTE: In order to pass the class, your combined average score on the midterm and final must be 70 percent or higher.
Late Policy
As a general rule, late assignments will lose 20% per school day. Late penalties may be waived if extenuating circumstances exist. If you feel that this is your situation, please talk to your instructor. However, please note that "I had to do assignments for my other classes" and "I had to work extra hours at my job" are not considered extenuating circumstances.
Working with Others
The central learning activity in the course is the group project. Each student will be assigned to a group for this purpose. Collaboration among group members on this project is not only encouraged, but required. This collaboration should be kept within the bounds of your own group. The work of one group should not be shared with another group.
All exams and quizzes in the course are to be completed individually. Students should not collaborate with others on the exams and quizzes.
All work submitted individually or as a group must be the original work of the submitting individual or group. Students who work together inappropriately, or who submit the work of others as their own, will be subject to failure in the course and possibly university-level action.
Grading
Grade Weighting
Phase 0 | 5% |
Phase 0.5 | 5% |
Phase 1 | 12% |
Phase 2 | 12% |
Phase 3 | 12% |
Phase 4 | 10% |
Class Participation | 10% |
Midterm Exam | 17% |
Final Exam | 17% |
NOTE: In order to pass the class, your average score on the midterm and final must be 70 percent or higher.
Letter Grades
A | 93-100 |
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 |
E | Below 60 |
Computers and Accounts
The Computer Science Dept. provides computers that you may use for your programming assignments. The Linux computer labs are located on the first floor and in the basement of the Talmage Building. You will need a Computer Science Dept. computer account in order to access these machines. (This account is different than your Route-Y account.) If you do not already have a Computer Science Dept. account, go to the web page at the following link to create or enable your account.
Your CS computer account can be set up here: accounts.cs.byu.edu
Account setup instructions are here: Setting Up Your Account
Abuse of BYU computers, networks, or facilities involving either pornography or illegal activity will result in loss of all Computer Science accounts and removal from all CS classes. Please refer to the CS Dept. Lab Rules and Policies for information regarding appropriate lab, computer, and account use. If you prefer, you can watch this entertaining video to learn about our lab policies: Lab Policies Video You will be held accountable for understanding and abiding by these policies.
If you would like to access the CS Dept. computers remotely, you can find instructions for doing so here: Remote VPN Access
CS Dept. Retake Policy
- Students are allowed only one retake of any class. If a student withdraws from or fails a class a second time, the student will not be allowed to register for any CS course for one semester (or one term, if in spring or summer). This policy does not apply to classes dropped before the add/drop deadline.
- After one semester (or term), a student must petition to be allowed to take CS courses again. The petition must provide evidence of a substantive change that makes success in future CS classes much more likely. For example, a student may have demonstrated success in technology, math, or science-based courses. The petition will be reviewed by the undergraduate advisor.
- Petitions for non-academic (e.g., medical or military) exceptions to the one semester/term waiting period may be granted according to university policies. Information about filing a petition can be found here: CS Dept. Retake Policy
Honor Code Standards
In keeping with the principles of the BYU Honor Code, students are expected to be honest in all of their academic work. Academic honesty means, most fundamentally, that any work you present as your own must in fact be your own work and not that of another. Violations of this principle may result in a failing grade in the course and additional disciplinary action by the university.
Students are also expected to adhere to the Dress and Grooming Standards. Adherence demonstrates respect for yourself and others and ensures an effective learning and working environment. It is the university's expectation, and my own expectation in class, that each student will abide by all Honor Code standards. Please call the Honor Code Office at 422-2847 if you have questions about those standards.
Harassment
Harassment of any kind is inappropriate at BYU. Specifically, BYU's policy against sexual harassment extends not only to employees of the university but to students as well. If you encounter sexual harassment, gender-based discrimination, or other inappropriate behavior, please talk to your professor, contact the Equal Employment Office at 422-5895 or 367-5689, or contact the Honor Code Office at 422-2847.
Disabilities
BYU is committed to providing reasonable accommodation to qualified persons with disabilities. If you have any disability that may adversely affect your success in this course, please contact the University Accessibility Center at 422-2767. Services deemed appropriate will be coordinated with the student and instructor by that office.
Children in the Classroom
The serious study of the physical and mathematical sciences requires uninterrupted concentration and focus in the classroom. Having small children in class is often a distraction that degrades the educational experience for the entire class. Please make other arrangements for child care rather than bringing children to class with you. If there are extenuating circumstances, please talk with your instructor in advance.