Welcome to CS 149 - Programming Fundamentals Accelerated (3 CR)
Will you be mastered by your machinery (computers specifically) or will you become the master? Have you ever wondered what computer programmers do? This course will help you to see how computing professionals solve problems and you will use the high level programming language, Java, to control what your computer will do. We will work together to master basic constructs of computer algorithms, have a little fun with graphical applications, solve problems in small groups, program some simple games and tools, and gain confidence in controlling the machines that have become ubiquitous in our modern society.
We know that you come in with varied experiences with computing, and that all of you have some experience with programming. We provide many help sources to guide your way through this material and for those with more extensive experience, you will have the opportunity to take on additional challenges. In addition to your textbook, which you will find to be a valuable resource in this course, you will have access to video tutorials, which demonstrate concepts and code development throughout the course, as well as instructor office hours and colleague teaching assistant consultation times.
The official catalog description: Students learn fundamental problem-solving techniques using a modern programming language. This course covers the same material as CS 139, but at an accelerated pace for students with programming experience. Students may not receive credit for both CS 139 and CS 149.
Important Course and Contact Information
Contact information Office ISAT/CS 217 The best way to reach me is via e-mail or during office hours. I generally respond within a couple of hours or less during normal business hours and evenings. Weekends may be a bit longer. |
Course information Section 1-MW 11:15-12:05 in ISAT/CS 248, F 11:15-12:05 HHS 2208 You will find that I do not do a lot of lecturing in this class; instead we will do a lot of lab work and in class activities. I will rely on you to do the required reading from the text and/or video tutorials and other supplemental material before the class in which we will discuss the material. The schedule is organized with preparation activities in one column and the corresponding class activity in the next. Class attendance is mandatory and will be taken. I am generally accessible even during times that are not my stated office hours. If I am available, you will find me in my office with the door open or via online communication. Feel free to stop by. We will use Piazza as a blogging, question tool and I generally monitor activity on that site each day. We will use pair programming in this class as a way to help you help one another through the difficult assignments. It is a commonly used technique both in the classroom and in some software engineering environments (see Extreme Programming for one application). The prerequisite to this class is programming experience with a high level computer language such as Java, Visual Basic, Python, or C. |
Professor Office hours Undergraduate TA coverage To be announced when TAs assigned |
Themes:
- Object-Oriented Paradigm—The OO paradigm models computing as the collaboration of objects rather than the decomposition of operations.
- UML—The Universal Modeling Language should be used for diagramming.
- Coding Practice—Computing professionals are comfortable with code; comfort comes from practice reading, writing, and debugging code.
- Software Engineering Approach—programming is part of a disciplined development effort that requires thoughtful design and coding, desk-checking, and thorough unit and integration testing.
- Professional Ethics—Intellectual property is owned by its creators and cannot be appropriated without permission. Even when used with permission, its creator must be cited. Turning in someone else’s intellectual property as one’s own is a violation of professional ethics as well as the JMU Honor Code.
- Reading Specifications--Precise specification of requirements, designs, and so forth, are basic documents in computing. Students must develop skills in reading specifications carefully and understanding exactly what they state.
- Professional Conduct -- Computer scientists must become adept at "figuring stuff out". Passive absorption of "lecture" material is not the way to learn in this fast changing environment. Students should be prepared to spend time engaging with the material in a variety of ways including but not limited to lab work, code walk throughs with fellow students, search for elegant solutions, and practice with programs outside of the class environment.
Objectives: The mission of this course is to make you better problem solvers. While controlling the computer is fun, the way we solve problems for the computer can be applied to many other kinds of problems in life. You will learn how to break a problem down into its component parts, determine the best solution to each of those parts, implement that solution in Java, test and correct the solution, and put the components together to form a whole application.
More specifically, during this course you will:
- Understand and use appropriate computer programming terminology and concepts.
- Develop clear and correct algorithms to solve problems on the computer.
- Read and interpret precise application specifications and develop Java programs from those specifications.
- Use appropriate software testing tools and procedures to thoroughly test programs.
- Apply software engineering principles to the act of developing application code.
- Perform your tasks ethically, being able to differentiate appropriate collaboration from cheating.
- Communicate effectively with the professor and colleagues about your programming.
- Use appropriate help resources to accomplish programming tasks.
- Evaluate your own work for compliance with requirements and course style guide.
We will do this by:
- using out of class video tutorials, the textbook, and homework assignments to learn new content, and
- working in teams under instructor guidance to apply that content to computing problems, and
- using lab exercises to practice new techniques and more general algorithms, and
- using periodic exams to test your understanding of the underlying principles, and
- using larger programming projects to reinforce and synthesize what you have learned in the tutorials, class, and labs.
This course meets the CS department objectives of:
- Programming: Students can develop computer programs that solve specific problems using an object oriented programming language. (E)
- Problem Solving Methods: Students can apply one or more problem solving methods in defining solution requirements and in designing, coding, testing, and documenting a software solution. (I)
These objectives were developed through collaboration with the department and other people that are teaching the course.
Course Practices
This class meets three days per week, twice in the lab and once in a classroom.
In preparation for the lecture and lab, students will have a variety of homework involving video tutorials, reading assignments, or homework practice problems. On the lecture day, students will work in small groups to solve problems related to the homework and take weekly quizzes. Lab days will permit students to practice with the new concepts or techniques and to implement the problem solutions developed during the lecture activity. All course materials will be posted on the course schedule and Canvas, typically before the class period.
Assessment
(10%) Classroom Activity and Homework will include weekly quizzes and group learning activities on Friday along with homework.
(10%) Labs will generally be done on Monday and Wednesday and will be due before the next scheduled class period. Labs will be done in pairs.
(25%) Programming Assignments (PAs) are longer term projects which synthesize a number of individual skills. PAs require you to solve a new problem and follow precise specifications.
(10%) Midterm 1
(20%) Midterm 2
(25%) Final Exam
The relative percentages of exams are increasing since the material accumulates through the semester and we want you to be able to practice answering the kinds of questions we ask on exams. Therefore, more weight is given at the end of the course than the beginning.
Course grading – I use a 10 point scale for final grades. 90% and above is an A, 80% is B etc. I do award +- grades for the final grade for work at the top and bottom of the scale. You need to earn a C or better to continue on to CS 159 and you must pass the final exam with a 60% or better to receive a C or better in this class. I do not give WP or WF grades except under extraordinary circumstances.
Note: Pursuant to the JMU Honor Code, “Each examination, paper and other written or electronically submitted assignment is submitted pursuant to the Honor Code…” (from the Honor Code site). In this class, evaluative work must be the student’s own work, with assistance from prescribed help resources only. Work primarily for the student’s own learning, may be collaborative. More detail will be provided with each assignment. We use a tool from Stanford University called Moss to detect inappropriate collaboration on programming assignments. All programming assignments are subject to evaluation using this tool.
Course Resources
Textbook – Starting Out with Java: From Control Structures through Objects, 4/E Tony Gaddis, Haywood Community College ISBN-10: 0136080200 OR Starting Out with Java: From Control Structures through Objects, 5/E Tony Gaddis, Haywood Community College ISBN-10: 0132855836 | ISBN-13: 978-0132855839. This textbook will be used extensively through the semester and into next semester. Used copies are fine, although you may want to be sure that you get the CD so that you have the appendices and code source for examples in the book.
Storage - You will need to have some means of storing your programs and other work in progress. We recommend that you set up an account with DropBox.com or GoogleDocs(Google Drive) or some other cloud facility. You can also use a removable device if preferred.
Java APIs – Oracle (the vendor of Java) provides an extensive library of tools that you will be able to use in your code. Documentation for these tools is available through this link.
Java Tutorials – Oracle also provides tutorials for java code. These can supplement your understanding of concepts in this course or to let you explore topics that we may not cover directly in class.
CS 139 Tutorials – These are video tutorials that will be available in Canvas to help you with new material. As we approach each new topic, these tutorials will introduce you to the material. They will remain available throughout the semester.
CodeBat – CodeBat is a web site which provides practice problems and feedback. When you don’t have a specific assignment to work on and you would like more practice, this site provides a great way to gain more skill. I will post specific examples to go with appropriate lessons.
IDE, Compiler, and other software tools – Links to software tools are available through Canvas. These are all open source, freely available resources.
JAC Card – Put some flex money on your JAC card to use for printing. Printing from the lab or other printers around campus costs about $.05/page. There may be times when you need to print from the lab.
Student Success
How do you learn to program well? First, it does not come by sitting in a classroom listening to me talk. Think about sports you have played or an instrument or tool that you have learned to use. You need to practice to become better and better. You will be successful in this class if:
- You practice nearly every day (Plan to spend 6-10 hours per week outside of class or more).
- You study content outside of class so that ….
- you come to class every day prepared to work on computing problems with your colleagues, and
- you use the labs to actively explore new concepts and ideas, and
- you get started early on programming assignments, and
- you never forget that whether you are a beginner or experienced programmer, you should ask for help in your learning when needed.
I will help you do this by:
- building tutorials and assignments to help you to learn new content. and
- creating interesting problem solving activities for class days, and
- creating challenging lab problems for your lab days, and
- creating larger problems that let you integrate a number of new skills, and
- supporting you as you learn this new material and tackle challenging problems.
The fine print:
Students with Disabilities: If you are a student with a documented disability, who will be requesting accommodations in my class, please make sure you are registered with the Office of Disability Services, Wilson Hall, Room 107 (568-6705) and provide me with a copy of your Access Plan letter outlining your accommodations. I will be glad to meet with you privately during my office hours to discuss your special needs. The sooner you can do this, the better I can assist you in meeting your learning goals in this course. More information: http://www.jmu.edu/syllabus/#Disability
Attendance: Since this class is based on the process of engaging with other students and the material in class, attendance is mandatory. I will take attendance each day through a check off sheet (and turning in activity materials). 4 attendance days will act as one homework/lab/other assignment. This will be in addition to any material that may be collected from that day.
"Excused" absences: Students who are unable to attend class due to JMU sponsored activities (such as sports, band, academic competition, academic field trips, etc) or personal religious observance may request deadline extensions BEFORE the expected absence. I will do my best to accommodate your special circumstances. Students with an excused absence will also be exempted from the attendance policy above for that day.
School closing for weather or other unexpected circumstances: Watch our Canvas and/or Piazza site for announcements related to make up work. Generally, if it is a lab day, we will conduct lab using Elluminate. If it is a class day, there will be an alternate individual assignment. Program and exam dates will be adjusted as needed. For online make-up, I will make provision for students who do not have access to the internet or Canvas. See me on the first class day after the missed class.
Dates and deadlines: http://www.jmu.edu/syllabus/#AddingDropping You are responsible for knowing and abiding by the registration dates and deadlines in effect for this and all other classes. See the link to those deadlines here.