Policies

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

  1. Learn principles of effective software design
  2. Understand design patterns and their application
  3. Learn to effectively document and communicate software designs
  4. Learn basic concepts of software quality assurance, including technical reviews and software testing
  5. 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)
  6. 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):

  1. Attending class, paying attention, participating
  2. In-class exercises and quizzes
  3. 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:

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:

Ticket to Ride®

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

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.