CS 246 Syllabus
- CS 235
COURSE MATERIAL NEEDED
- Head First Java
- (Available online through the BYU-I library subscription: http://proquestcombo.safaribooksonline.com.byui.idm.oclc.org/0596009208)
- Head First Design Patterns
- (Available online through the BYU-I library subscription: http://proquestcombo.safaribooksonline.com.byui.idm.oclc.org/0596007124?uicode=byui)
Compare Prices for your textbooks through the University Store Comparison Site. They will show you all of the options from the University Store plus several online options to help you find the best price.
- Demonstrate knowledge of the principles and practices of good object-oriented design.
- Demonstrate knowledge of the syntax and semantics of the Java programming language.
- Know when the appropriate object-oriented software “organizing principle” is composition, and when it is derivation (inheritance).
- Demonstrate understanding of the concepts of encapsulation, modularity, reuse, and interface versus implementation.
- Demonstrate skill with the fundamentals of collaborative software development, including source code version control and test-driven development.
LEARNING MODEL ARCHITECTURE
You will be reading reference and tutorial websites and watching instructor demos.
Teach One Another
You will be participating in weekly team activities, posting helpful links, and working on team projects.
Ponder and Prove
You will be doing weekly programming assignments (both individual and team-based), with the second half of the semester devoted to building a larger team project.
ACTIVITIES AND ASSIGNMENTS
Team Readiness Activity
At the beginning of each week, there will be a team activity designed to help reinforce the concept that will be covered that week, give students an opportunity to teach one another, and to prepare for the weekly assignment.
These activities are to be completed in teams (except for the first two weeks), and are designed to take about an hour. Each activity is designed to be a straightforward application of the concepts of the week to help prepare students for the weekly assignment, which will require significantly more application, adaptation, and problem solving skills.
Students need to coordinate a time to meet with their team members each week before Wednesday night at midnight when the assignment is due. Assignments are always due at 11:59 PM in your time zone, so if someone in your group is in a later time zone, it is your responsibility to find a meeting time that will make it possible for you to turn in your assignment on time. Each student is expected to read/watch the weekly preparation material before meeting with their teams to make the meeting time as efficient as possible.
If circumstances require a student to be absent, they must notify the instructor and their teammates beforehand, in which case they will receive the same score as their teammates. Otherwise no credit will be given for the activity. In addition, at the end of the semester each individual will evaluate the contributions of their team members, which will also factor into the team activity score.
Each team member is expected to contribute to this deliverable, and each will submit a copy of the same files. At a minimum, students should arrange a virtual meeting (Skype, Google Hangout, etc.), where they can verbally work together as the assignment is written. The assignment itself can be jointly co-authored in a real-time collaborative editor (Google Docs), or it could be authored on a student’s computer, provided the screen is shared to allow the other team members to help describe what to type.
An assignment or project deliverable and a self-assessment will be due each week at 11:59 PM (Mountain Time) on Saturday night in your time zone. The assignments are designed to teach fundamental skills that will then be used in the completion of the semester long project milestones.
There will be one comprehensive final exam administered on I-Learn designed to test knowledge of Java fundamentals and design pattern application.
This course will take a significant amount of time, so please plan accordingly. There is simply no other way to learn and develop software development skills. Once you begin coding your team project, you will be expected to spend an average of 10 hours per week on the course, and will be required to report the number of hours spent in a weekly status report.
Grades will be assigned according to the following breakdown:
Team Activities: 10%
Individual Assignments: 30%
Team Project: 40%
Final Exam: 10%
FINAL GRADE SCALE
|Lesson 01||Java Fundamentals|
|Lesson 02||Deeper Java Concepts|
|Lesson 03||Version control|
|Lesson 04||GUIs and Event Driven Programming|
|Lesson 05||Multi-threaded Programming|
|Lesson 07||Test Driven Development|
|Lesson 08||Android Data Storage|
|Lesson 11||Design Pattern Practice|
|Lesson 12||Design Pattern Practice|
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.
I encourage you to use the Internet as a resource, but 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 TO SCHEDULE AND ASSIGNMENTS
Schedules, assignments, and policies are subject to change. You will be notified of any changes through the Notes from Instructor page or in a class wide email.
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.