Software Design and Development :: CS 246

Syllabus and Schedule

Prerequisites

Course Outcomes

  1. Demonstrate knowledge of the principles and practices of good object-oriented design.

  2. Demonstrate knowledge of the syntax and semantics of the Java programming language.

  3. Identify common software design patterns and explain how they can be applied in real-world problems.

  4. Independently find and evaluate technical knowledge in order to develop solutions to challenging software development problems.

  5. Demonstrate skill with the fundamentals of collaborative software development including source code version control.

Overview

CS 246 is unlike other CS courses you've taken in the past.

In most courses, you've been given a textbook containing a formula of steps to follow, then told to experiment a little bit by implementing specific projects based on those formula.

The first half of this course will help you to learn the basic foundations of Java programming. Up-to-date reading materials have been curated from tutorial and Q&A sites across the Internet. Where necessary, additional information has been provided by the instructor.

I must emphasize that there is very little hand-holding in this course.

While the information provided will be enough to get you started on most of your assignments, you'll often have to research much of the information on your own. As someone interested in a career related to software-development, this ability to research and learn technologies on your own will be one of the most valuable skills you will develop during your time at BYU-Idaho.

Course Structure

As mentioned, the first half of this course is designed to teach you the foundations of Java programming. You'll also learn to work effectively in small, software teams. As much as movies like to portray the lone hacker working in the shadows of his parent's basement, software development is very much a team endeavor, so learning to collaborate with other developers is vital to make yourself attractive to future employers.

The second half of the course will focus on software design patterns.

Most of your time in the second half of the course will be dominated by your team project. The project will be an Android mobile application designed for an outside sponsor. This is often one of the most exciting and rewarding parts of the course for the students, but it is also the most challenging. It is in this part of the course that you will grow the most as a student of software development.

Be warned: Most of the work you do for your project will be work that nobody else in the class is doing. You might be able to get help and guidance from classmates and your instructor, but most of your assistance will come in the form of how to find the answer you're looking for, rather than what is the answer you're looking for.

This collaborative and challenging project experience not only provides you with an unparalleled opportunity for learning and growth, but provides you with unique, real-world experience you can put on your resumé.

Throughout the course, we'll be using real-world tools that companies use for collaborative software development such as Github and Teams/Slack. Familiarity with these tools will give you a further edge in the employment market.

Course Outline and Schedule

WeekConcepts Learned
Week 1Introduction to Java
Week 2Interfaces
Week 3Collections
Week 4Version Control
Week 5Event-Driven Programming
Week 6Strategy Pattern
Week 7Model-View-Controller Pattern
Week 8Observer Pattern
Week 9Factory Pattern
Week 10Singleton Pattern
Week 11Adapter Pattern
Week 12Template Method Pattern
Week 13Iterator / Composite Patterns
Week 14Submit Final Report

Grading

Grading works as follows:

ItemWeight
Reading (Weeks 1-6) & Design Pattern (Weeks 7-13) Quizzes20%
Team Activities (Weeks 1-6)10%
Individual Assignments (Weeks 1-6)40%
Team Project30%

Late assignments are not accepted unless prior approval has been given by the instructor.

Academic Honesty

Be responsible for your own education. You may work with your classmates, but all individual work that is submitted must be original. When programming, share ideas but do not share code! Assistance from a classmate should be on par with the help you would expect from a lab assistant.

While you are encouraged to use the Internet as a resource, recognize that you should not copy and paste someone else’s work as your own. Cite all sources and follow copyright laws. When in doubt, give credit and be upfront.

The penalty for copying or plagiarism of assignments might be one or more of the following: a zero on the assignment, being asked to withdraw from the class, a failing grade in the class, or disciplinary action by the university.

Changes

Schedules, assignments, and policies are subject to change. You will be notified of any changes via announcements in Slack and/or email.

Accessibility

In compliance with the Americans with Disabilities Act, all qualified students enrolled in this course are entitled to "reasonable accommodation.” It is the student’s responsibility to disclose to the teacher any special need she/he may have before the end of the first week of class.

Maintaining a Safe Learning Environment

BYU-Idaho prohibits sex discrimination against any participant in its education programs or activities. Prohibited sex discrimination includes incidents of sexual harassment (including sexual violence), dating violence, domestic violence, sexual assault, and stalking (collectively "sexual misconduct").

As an instructor, one of my responsibilities is to help create a safe learning environment for my students and for the campus as a whole. University policy requires that I report all incidents of sexual misconduct that come to my attention. If you encounter sexual misconduct, please contact the Title IX Coordinator at titleix@byui.edu or 208-496-9209. Additional information about sexual misconduct and available resources can be found at www.byui.edu/titleix.