CoSc 200
Programming Techniques

  • Schedule
  • Links
  • Teaching Assistants

  • 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.

    Acknowledgement

    These web-based course materials are modifications of materials developed by Kim B. Bruce, Andrea Pohoreckyj Danyluk, and Thomas P. Murtagh for CS 134 Introduction to Programming offered at Williams College. I, David Housman, thank them for their kind permission to use and modify their materials. I take full responsibility for the correctness of these materials.

    Instructor

    Instructor: David Housman
    Office: SC 112, 535-7405
    E-mail: dhousman@goshen.edu
    Home Page: www.goshen.edu/~dhousman/
    Home: 875-0339

    Learning Resources and Assessments

    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.

    Collaboration and Academic Integrity

    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

    Evaluation and Grades

    Your grade will be based upon your performance on the weekly laboratory assignments, programming exams, midterm exams, and the final exam. Students taking the course for three credits will attend only the first 28 lectures and will complete only the first ten laboratory assignments, the first two programming exams, and a portion of the final exam. Details are given in the following table. A semester average of at least 90%, 80%, 70%, and 60% will earn a grade of A, B, C, and D, respectively. Some upward adjustment may be made based upon class participation, effort, and progress.

    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  

    Time Log

    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