|
CoSc 200
|
Computer Science 200 is an introduction to algorithm development emphasizing structured, object-oriented design. Algorithms will be implemented as programs in the Java programming language. We will introduce data structures and recursion as tools to construct correct, understandable, and efficient algorithms. These topics will be developed further in CoSc 215 Data Structures. We highly recommend the combination of CoSc 200 and CoSc 215 for those who wish a good introduction to the science of computing.
This course is a prerequisite for all upper level Computer Science courses. In CoSc 200 we do not assume that you have had any previous computer programming experience; however, the pace of the course is fairly intense. If you have had extensive previous programming experience, you might consider CoSc 215. If you are concerned about the pace of the course, you might consider CoSc 105 Introduction to Computer Science or BIS 250 Introduction to Business Programming. Please discuss placement issues with the instructor.
| Instructor: | David Housman |
| Office: | SC 112, 535-7405 |
| E-mail: | dhousman@goshen.edu |
| Home Page: | www.goshen.edu/~dhousman/ |
| Home: | 875-0339 |
| Text | Java: An Eventful Approach by Kim B. Bruce, Andrea Pohoreckyj Danyluk, and Thomas P. Murtagh (ISBN: 0-13-142415-7). Read the text and work on the exercises carefully before and after each lecture. Write down questions to ask during lecture, office hours, or lab. |
| Lectures | Come to UN 004 on MWF 1:00 - 1:50pm. I will assume that you will have read the appropriate material in the text before class. That does not mean that you need to understand it all completely. But it does mean I won't attempt to repeat everything in the text. Instead I will spend class time looking at examples, especially those where you can help develop the code. You will understand this material much better by engaging in this problem solving activity than in passively sitting back and listening to a lecture. |
| Website | Visit www.goshen.edu/~dhousman/cosc200. Here you can review lecture notes, obtain laboratory assignments and other handouts, and find other useful information. In particular, see the continuously evolving schedule. Visit https://courses.goshen.edu to find solutions to exercises in the text, email access to other students in the course, a course discussion board, the place to submit your laboratory assignments, and your current grades. |
| Software | We will be using the Java programming language, the JCreator integrated development environment, and the objectdraw library. These are available from any networked computer on campus. You can freely download and install this software on your personal computer using the links on the links page. |
| Labs | Come to UN004 on R 12:30 - 1:45pm. Read the lab assignment and get started beforehand. Bring relevant materials. Focus both on the task and what you are suppose to be learning by completing the task. Discuss with classmates. Ask the instructor and teaching assistants questions. |
| Lab Assignments | Use to synthesize and apply the concepts and techniques introduced in lecture and readings. You will generally receive the lab assignment on the Monday or Wednesday before the lab. This will give you the opportunity to plan your solution before coming to lab. In lab you will work on writing and debugging the program. The 75 minutes you spend in lab on Thursday will give you a good start. Labs are generally due on Tuesday. The instructor will provide feedback by your next lab period. You may resubmit or submit your work by the following Tuesday, but there will be a 5 point penalty. There may be exceptions to this plan. So, always check the due dates given in the lab handout. |
| Classmates | Discuss lectures, labs, readings, and exercises with other students. Ask them questions and try to answer their questions. Schedule a regular time and place for group study. Try pair programming. Review together for written exams. Collaboration can help learning, but simple copying hinders learning. |
| Teaching Assistants | Ask them questions. Be prepared to not receive immediate answers. Answer their questions as they try to guide you toward your own answers. |
| Instructor | Listen to his lectures. Ask questions during lectures, labs, office hours, and via phone and email. Be prepared to not receive immediate answers. Answer his questions as he tries to guide you toward your own answers. |
| Programming Exams | Gain experience and confidence in solving problems and writing code on your own. |
| Midterm and Final Exams | Synthesize and solidify your understanding of the concepts. |
| Time | Schedule sufficiently long periods of study with breaks for other courses, activities, sleep, and so forth. Do not cram for exams. Do not work on programs for too long in a single stretch. Schedule some time for reflection on and synthesis of what you have been learning. Expect to spend at least 8 hours per week outside of class. Keep track of your time. |
| Learning Resources | Learn more about good study habits, how to take exams, how to combat "exam anxiety", or how to identify and deal with learning disabilities. Ask for group tutoring possibilities. See Lois Martin in KU004 or call 535-7576. |
| Extra Credit | Attend an on campus speaker or event related to computer science. Read an article in a computer science journal. Write a one page summary of what was interesting. Receive up to 3 bonus points per submission. No more than 7 submissions. |
You are encouraged to use all available resources in order to learn the concepts and techiques discussed in this course. In particular, conversations with other students, teaching assistants, and the instructor can be an effective learning method. Reading other books and web pages can be another effective learning method. However, copying someone else's code subverts the learning process.
Laboratory Assignments
You may not obtain someone else's code. You may look at and discuss
another student's code, but you may not create or receive any written
record during the discussion. You should give written acknowledgement to people
with whom you have had discussions and written materials that were helpful.
Pair Programming
Pair programming consists of two programmers working side-by-side, collaborating
on the same design, algorithm, code, or test. One programmer, the driver, has
control of the keyboard/mouse and actively implements the program. The other
programmer, the observer, continuously observes the work of the driver to identify
tactical (syntactic, spelling, etc.) defects and also thinks strategically about
the direction of the work. On demand, the two programmers can brainstorm any
challenging problem. Because the two programmers periodically switch roles,
they work together as equals to develop software. (Laurie Williams, North Carolina
State University Computer Science, williams@csc.ncsu.edu, obtained from www.pairprogramming.com).
You may complete lab assignments using the pair programming alternative.
To do so, you must (1) be visually engaged in the pair programming process during
lab time, (2) include both student names in all source files, and (3) submit
all files to the drop box of a single student of the pair.
Programming Exams
You may use course-related written and software
resources. You may converse about the exam with no one
other than the instructor.
Midterm and Final Exams
You may not use any resources unless a specific
exception is stated by the instructor. You may converse about the
exam with no one other than the instructor.
Penalties
Failure to observe the above rules will result in a
penalty ranging from a zero on the assignment or exam to
immediate failure of the course. Any violation of academic
integrity will be reported to the Academic Dean.
Rewards
Observation of the above rules will help you learn the material well and give
you the satisfaction of knowing that you have earned your grade
| Activity | Four Credit Points |
Three Credit Points |
Comments |
| Lab Assignments | 220 | 160 | Each of the eleven lab assignments is worth 20 points. Three credit students complete only the first eight labs. |
| Programming Exams | 250 | 150 | All students complete Program 1 (100 points) and Program 2 (50 points). Four credit students also complete Program 3 (100 points). |
| Midterm Exams | 150 | 150 | Each of the three midterm exams is worth 50 points. |
| Final Exam | 100 | 75 | Some problems will be completed only by four-credit students. Your percentage on the final exam can replace your grade on one midterm exam. |
| Time Log | 20 | 20 | Keep a log of the time you spend on this course and turn in when requested. |
| Total | 740 | 555 |
Please keep a log of the time you spend on this course. You should keep this log in a spreadsheet that can be submitted when requested. For each stretch of time include the date, time started and ended, amount of time spent, and a short description. The description only needs to distinguish among lecture attendence, study (reading the text, working on the exercises, reviewing lecture notes), and working on lab assignments. Note when you work with someone else.
| Date | When | Time (hours) | Description |
| Wed Jan 4 | 1:00 - 2:00 | 1.0 | Lecture |
| Wed Jan 4 | 7:00 - 9:00 | 2.0 | Text |
| Thur Jan 5 | 12:30 - 1:50 | 1.3 | Lab |
| Thur Jan 5 | 7:00 - 8:00 | 1.0 | Worked on lab with Matt |