Prerequisite: CPSC 109 or 110 or permission of instructor. Continued coverage of disciplined problem-solving and algorithmic development including emphasis on procedural and data abstraction. Topics include elementary data structures such as arrays, files, and classes. The notions of data modeling and the linking of data type definitions with their associated operations is introduced. Study of program design, coding, debugging, testing, and documentation in a higher level language that supports the object-oriented paradigm. Intended for students who have had previous programming experience.
What you need to know
- 3-5 hours of studying per week outside of class time.
- 5- 10 hours of programming per week outside of class time.
- writing ~2,000 lines of Java code for the entire semester.
Comments related to required effort. The only way to learn a skill like computer programming is to do deliberate practice. My undergraduate degree is a Bachelor of Fine Arts in music performance. Instrumental lessons such as piano are a one credit course and I put in about 3 hours per day practicing. That’s 20 hours of outside work for a one credit course and 4,000 hours total for my 4 years of college. My friend, Professor Polly Szatrowski requires 20 hours of outside class practice time for students taking her 5 credit Japanese language course. Compared to these examples, the requirements for this class are modest.
Format of class
We will be following what is called a ‘flipped classroom model’. Here is the Wikipedia description of that phrase:
Flipped classroom is a form of blended learning in which students learn content online by watching video lectures, usually at home, and homework is done in class with teachers and students discussing and solving questions. Teacher interaction with students is more personalized – guidance instead of lecturing. This is also known as backwards classroom, inverted classroom, reverse teaching, and the Thayer Method.
What this means for us is that we will be watching the online lectures of the Udacity course Intro to Java Programming. I previewed part of the course and it looks good. We will roughly go through the Udacity course one unit per week. We will also be reading the textbook Head First Java by Kathy Sierra and Bert Bates. This book is structured as a workbook. There are pages where you are meant to pencil in your answers. The answers are then given on the next page. So you have a choice. You can read through the chapter without fully engaging your head skipping the fill-in-the-blanks part and just reading the answers. Or you can use this book to actively learn the material. The ebook version is free via the university library. The price of the physical book is only $30 at Amazon so writing in the book isn’t that financially painful. You will also be doing a substantial amount of programming outside of class.
You might be wondering what we will be doing in class. Here is the scoop
- Roughly 7 times during the semester you will be taking a short Readiness Assessment Test, just to encourage you to watch the videos and read the book.
- The vast majority of the class time is spent doing not listening to me yabbering away. You will be working on tasks that require you to apply the knowledge you have gained from watching the videos and reading the textbook. Part of the work will be in teams, part with a partner and part individually.
- Because of the hands-on nature of the course, you will need to bring a laptop to gain full benefit from the course.
During the first day of class, all students will be assigned to permanent teams. Throughout the course, teams will both take team tests and participate in joint activities. Team performance will be one component of your final grade.
Grading is based on a method developed by Professor Lee Sheldon at Indiana University. It is based on obtaining experience points (XP). The number of XP determines what level you are at. You start the class with 0 XP at Level Zero. The level you obtain at the end of the semester determines your final grade (note: the next course in the computer science sequence, cpsc240, requires a C or better in this course). Here is the XP chart:
There will be opportunities to earn at least 2400XP during the course. If you fail to obtain enough XP on one task you can simply do an additional task. For example, if you do poorly on a quiz, you can elect to do an additional side challenge. You gain XP working individually, with a partner, and with your team. In a sense, all work is optional. Here are ways to earn XP.
RATs -Readiness Assessment Tests – 500XP
There will be approximately 7 short multiple-choice readiness assessment tests given during the course. Each test will be taken individually, then, immediately after, the same test will be taken as a team. Each individual test is worth on average 35 points; each team quiz is also worth on average 35. Makeup tests will not be given.
Challenges – A Replacement for the Final Exam – 350XP
Often the fate of what grade you receive for a class, hinges on how well you perform on the final given at the last possible moment of the semester. I prefer a graduated approach that gives you more feedback on your performance and grade throughout the semester. Starting around the midpoint of the semester, I will be posting take-home timed programming challenges. Anytime during a 2 week window you can take the one hour challenge. These challenges are designed to be easy to moderately easy if you understood the program you wrote up to that point.
Homework – 450XP
6-10 homework assignments will be distributed throughout the semester. To accommodate students of different abilities some challenges may come in different editions: the standard edition and the hacker’s edition. You gain more XP by completing the hacker’s edition.
Individual & Partner Programming Remixes – 450XP
To practice what we learned in the videos and textbook we will remix some of the sample code they present. Approximately ten remixes will be assigned throughout the semester. Some are specified as partner tasks and some as individual tasks. These challenges will be done in class. Most of these challenges are variations of programming you have done while watching the videos.
Worksheets/Labs -300 XP
A good deal of class time will be directed at doing hands-on work. Sometimes a team will collaborate on one task. For example, the team might work on a worksheet covering a particular programming concept. At other times, each individual must do something (for example, the first task is to get a Java IDE running), but the idea is that everyone in the team will help make sure each individual will succeed.
Team participation – 75XP
Each student will rate the helpfulness of all members of their team. Individual team participation scores will be the sum of the points they receive from other members of their team. Each team member distributes 75 points to other members of the team. Thus, the average team participation score will be 100 points. The rater must differentiate some of their ratings (they cannot assign the same rating to all members).
Puzzlers – 300XP
A set of four moderately challenging programming assignments.
Announcements, discussions, and questions
I will communicate with the class via piazza and the course web page.
For questions about any aspect of the course including homeworks and labs, please use piazza rather than email. If you want you can tag questions as ‘private’.
You are responsible for checking your email and piazza every 24 hours and the web page at least weekly.
On successful completion of this course, you should be able to analyze and explain the behavior of programs involving the fundamental program constructs
- Write short programs that use the fundamental program constructs, including standard conditional and iterative control structures
- Identify and correct syntax and logic errors in short programs
- Write short programs that use arrays or array lists
- Design and implement a class based on attributes and behaviors of objects
- Construct objects using a class and activate methods on them
- Use static and instance members of a class properly
- Identify and describe the properties of a variable such as its associated value, scope and lifetime
- Describe the parameter passing mechanisms in terms of formal parameters, actual parameters, non-object parameters and object parameters
- Write a graphics program that draws simple shapes
- Identify super- and subclasses in a class hierarchy
- Recognize and trace overrridden and inherited methods in a class hierarchy
- Write javadoc comments for classes and methods
- Be able to use an integrated development environment and a debugger
- Demonstrate an understanding of software development practices including developing test cases.
- Demonstrate an ability to take a rough English description of a problem and develop a program of up to several hundred lines to solve the problem.
The above list of competencies are from the Udacity website.
General Education Student Learning Outcomes
- Students will demonstrate an ability to interpret quantitative/symbolic information. For example, students should be able to examine an algorithm or source code and state in English the behavior of that code.
- Students will have the ability to convert relevant information into various mathematical/analytical forms. For examples, students should be able to take a problem description and produce a working computer program.
- Students will be able to apply analytical techniques or rules to solve problems in a variety of contexts. For examples, take an idea they have for an Android application, produce a specification for how to implement that idea, and produce a working version of the program.
- Students will gain an appreciation for how analytical techniques or rules are used to address real-world problems across multiple disciplines.
Avatar names, pseudonyms, noms de plume
During the first week of class I will ask you for your avatar name, pseudonym, whatever. This is the name that will appear on the Experience Point Google Spreadsheet that will be viewable by everyone in the class. If you wish to remain anonymous, don’t share your avatar name with anyone. On the other hand, if you would like recognition for achieving level 10 as an example (“a big shout out to tera miner for achieving level 10″), you can share your name. The decision is yours. To further protect the anonymity of those who wish to remain anonymous, the spreadsheet will also be populated by fictitious avatar names.
Accommodations for students with special needs
Any student with a documented disability may receive a special accommodation to complete any requirements of this course. If you are have a disability or believe you have one you may wish to self-identify. You may do so by providing documentation to the Office of Disability Services located in Room 203 of George Washington Hall (Phone: Voice 540-654-1266, Fax: 540-654-1163). Appropriate accommodations may then be provided for you. If you have a condition that may affect your ability to exit the premises in an emergency or that may cause an emergency during class, you are encouraged to discuss this in confidence with me and/or anyone at the Office of Disability Services. This office can also answer any questions you have about the Americans with Disabilities Act (ADA).
I assume you are an ethical student and a person with integrity. I expect that you will follow the university honor code (see http://rosemary.umw.edu/CSHonorCode.html). Please use common sense and ask yourself what would a person with integrity do? To help you, I would like to make three comments related to this:
Plagiarism means presenting some other person’s work as your own. This can mean using some other person’s words without acknowledging their source, or using some other person’s ideas. Copying another student’s work (homework or exam) is also plagiarism. Plagiarism will minimally result in an automatic zero for that submission.
Collusion is unauthorized collaboration that produces work which is then presented as work completed independently by the student. Collusion includes participating in group discussions that develop solutions which everyone copies. Penalties for plagiarism and collusion include receiving a failing grade for the course.
I ask that you respect the other people in the class. I recognize that your life circumstances may require you to receive cell phone calls during class. If this is the case please set your cell phone on vibrate and discretely leave the class to accept calls. During tests, if you walk out of the classroom, or consult/display your cell phone, I will assume you are done with the test and collect your grading sheet
The class schedule is posted on the course website.
Here are some other important things you should know.
- Regarding XP. As in a computer game, there is no negotiation for what XP you need to attain a certain level. For example, level 14 (the level associated with an A-) requires 2000 XP. Last semester someone sent me email saying they had 1998 XP, they worked really really hard all semester and deserved an A-. I gave him the A- but starting now the boundaries are hard and there is no negotiating.
- Cheating. Last semester 5 students in one section of a class I was teaching plagiarized source code from the web. In all cases an honor council hearing was held. Results included a zero for the assignment, and 20 hours of community service. Please be extremely mindful when you work on assignments.
- Crowd sourcing and reducing my Cognitive Load. Here’s the deal. When communicating with me please error on the side of giving me too much information. Last semester, I received emails with sentences like “My partner was Austin” (when there were 3 Austins in the class) or “I worked with Matt”. It reduces my cognitive load if you specify what section you are in and give full names.