• Overview
  • The People
  • Class Meetings
  • Textbooks
  • Prerequisites
  • Online Resources
  • COMP 271 Web Page
  • Discussion Group
  • Email with Instructor
  • Electronic Assignment Submission
  • Graded Work
  • Homework Assignments (20%)
  • Programming Assignments (30%)
  • Labs (10%)
  • Exams (40%)
  • Course Grades
  • Academic Honesty
  • Late Policies
  • Computing Resources at Loyola
  • Departmental Network and Labs
  • Computer Centers run by division of Information Services
  • If you wish, you may download a printable version of the Syllabus.


    Structured Programming and Data Structures is an undergraduate course which is a follow-up to Structured Programming (COMP 170). The goal of Comp 170 can be viewed as gaining the ability to write computer programs for accomplishing tasks. The key in that course was that programs must work correctly for the task at hand. In this course, we will focus on the fact that there are actually many different ways to correctly solve a particular problem and that these different methods may vary greatly in efficiency and adaptability.

    What we will find is that writing a ``good'' program is not as simple as starting with a correct program and then improving it. Instead, the quality of a program is most determined by key thoughts and decisions which take place long before the first line of code might be written. Relevant issues include the choice of data structures which are used to organize all of the information within a program, and the structure and level of generality which allow components of a program to be better maintained, reused, and adapted.

    The material in the course will be reinforced through laboratory work, significant programming assignments in Java, as well as written homework assignments and in-class exams.

  • The People

    Michael Goldwasser
    Email: mhg@cs.luc.edu
    Office: DH 319 Lake Shore Campus
    Phone: (773) 508-2883
  • Tuesdays, 4:30pm-5:30pm
  • Thursdays, 2:30pm-3:30pm
  • or by appointment

  • Teaching Assistant:
    Fan Zhang
    Email: fangz@hotmail.com
    Hours: tba

  • Class Meetings

    The lectures:
    The material will be presented in two weekly lectures. Class participation is most welcome. The schedule and copies of lecture notes can be found here.
    Time:Tuesday/Thursday, 6:00-7:15pm
    Place:Damen Hall 735 (Lake Shore Campus)

    The labs:
    Each enrollment section of the course includes a 50 minute lab each week. This lab is mandatory and will be a part of your final grade.

    Time:Tuesday, 7:25-8:15pm
    Place:Damen Hall 342 (Lake Shore Campus) - please note the room change!

  • Textbooks

    The required textbook for this course is:

    Data Structures and Algorithms in JAVA, 2nd edition
    Michael T. Goodrich and Roberto Tamassia
    John Wiley & Sons, 2001, ISBN 0-471-38367-8

    Copies of that text are available both at the Barnes and Noble campus bookstore, as well as Beck's Bookstore, or various online book vendors. Please notice that we are using the second edition of the text, with a brown cover (the first edition had a white/yellow cover). The web site for the textbook includes a good deal of helpful information. Included is source code for most examples from the text, some cool applets for a few of the algorithms we study, copies of slides that they use in coordination with many chapters, and hints for some homework questions!

    In addition to the one required book, the following list contains many other useful sources for information both about programming in Java, as well as about algorithms and data structures in general.

    Data Structures and Algorithms
    Aho and Ullman
    Addison Wesley, 1985

    Introduction to Algorithms, second edition
    Cormen, Leiserson, Rivest and Stein
    MIT Press, 2001

    JAVA in a Nutshell, fourth edition
    O'Reilly & Associates, 2002

    Data Structures, Algorithms, and Applications in Java
    McGraw-Hill, 2000.

    Algorithms in Java, third edition, Parts 1-4
    Addison-Wesley, 2002.

    JAVA: An Introduction to Computer Science & Programming
    Prentice Hall, 1999.
  • Prerequisites

    The official prerequisite for this course is Structured Programming (COMP 170). We will specifically assume that you took the prerequisite using the Java programming language. If this is not the case, it will be up to you to learn Java outside of class (Chapter~1 of the textbook offers a review of Java).

  • Online Resources

    This course will take advantage of the Internet and the departmental network in many ways.

  • COMP 271 Web Page: www.cs.luc.edu/~mhg/comp271/

    With the exception of the first day's printed handouts, most of the information for this course will be distributed only by means of the course web page. This web site will contain all assignments, a schedule of lectures, detailed lecture notes and links to many other sources of information.

    The web page contains some information (e.g. solutions, submitted assignments, individual grades) which is more sensitive and therefore which will be available to students in the class only after they have identified themselves properly. To gain access to these parts of the web page, a student must first complete the following online questionnaire, creating a unique identity and password.

  • Discussion Group

    In order to create more of a class community and to foster further discussions involving computer science, we will be maintaining an online discussion group which allows all members of the class to post messages to the community. We encourage messages related directly to course material or to more general issues of Computer Science. Questions of a general nature can be answered by the instructor or other students. The instructor will also use this discussion group for announcements throughout the course.

  • Email with Instructor

    Questions or comments of an individual nature should be emailed directly to the instructor. Topics suitable for email include questions about grades received, requests for an appointment, requests for help on an assignment.

  • Electronic Assignment Submission

    All assignments for this course must be submitted electronically! The submission procedure will be done through the course web page, and allows students to submit from any computer connected to the Internet. Each student in this class will be selecting a unique username/password combination solely for use in identifying the student when using the course web page.

    Details of the procedure are discussed at http://www.cs.luc.edu./~mhg/comp271/submit/.

  • Graded Work

  • Homework Assignments (20%)

    We expect there to be a total of 8 written homework assignments during the course. These will generally be due at the beginning of class on Thursdays. The problems will consist of short questions reinforcing the material in the lectures, readings, labs and programs.

  • Programming Assignments (30%)

    We expect there to be a total of 8 programming assignments during the course. Early in the course you will have approximately one week for each assignment; later in the course you will often have two weeks. These assignments will generally be due at 8pm on a Monday.

  • Labs (10%)

    We expect there to be a total of 12 labs in the course, which are to be completed during the assigned labs session. Each lab is worth a maximum of two points. Full credit will be given to anyone making reasonable progress towards the goal. One of two points will be given to those making an effort, but having more serious difficulties. Zero points will be given for those who make no effort (e.g., do not attend).

  • Exams (40%)

  • First Exam (10%), Thursday, 26 September 2002
  • Second Exam (10%), Tuesday, 5 November 2002
  • Final Exam (20%), Thursday, 12 December 2002
  • Course Grades

    In calculating your course grade, we will drop the lowest programming assignment score, the lowest written homework set score, and the lowest lab. Thus, you may choose to ``punt'' one of each such assignments, or you may choose to do them all in an attempt to learn more or to maximize your grade.

    Letter grades will be based on each student's overall percentage of awarded points according to the above formula.

    Student percentage above 85% will result in a grade of A or better.
    Student percentage above 78% will result in a grade of B+ or better.
    Student percentage above 70% will result in a grade of B or better.
    Student percentage above 65% will result in a grade of C+ or better.
    Student percentage above 60% will result in a grade of C or better.
    Student percentage above 55% will result in a grade of D+ or better.
    Student percentage above 50% will result in a grade of D or better.
    Student percentage below 50% will result in a grade of F.

    Any modification to this scale at the end of the course will be in favor of the students. That is we may later decide to award an A to a student who is slightly below the above cutoff, but we certainly will not take away an A from someone who is just above the cutoff.

  • Academic Honesty

    Students are expected to have read the statement on academic integrity available on pages 12-13 of Loyola's ``Undergraduate Studies'' catalog. In addition to this statement, we wish to emphasize issues most relevant to this course.

    When it comes to learning and understanding the general material covered in class or practice problems, you may certainly use other references and you may have discussions with other students in this class or other people from outside of this class. Similarly, you are free to have conversations and to use other materials regarding the general syntax and use of the Java language.

    However, when it comes to work which is submitted for this course, all such work must be entirely your own. You are in no way to discuss such assignments, nor are you to use or or search for direct or indirect assistance from any outside references, including but not limited to:

  • other students in this class
  • past students, whether from this school or other schools
  • other acquaintances
  • other texts or books
  • online information not referenced on the course or text web page
  • The only exception to the above rule is that you are free to have consultations with the instructor, teaching assistant, or members of the organized tutoring centers on campus. Even in these cases, if you receive significant help you should make sure to document both the source of the help as well as the extent.

    Any violations of the general Loyola policy or the policies outlined in this handout will be dealt with severely. Penalties will apply as well to a student who is aiding another student. Any such violations will result in a minimum penalty of a zero on the given assignment which cannot be dropped, and severe or repeated violations will result in an immediate failing grade in the course. Furthermore all incidents will be reported in writing to both the department and the appropriate dean.

  • Late Policies

    The timing of lectures, labs, and assignments are designed in a coordinated way. A student will be best served by completing all parts of the course in a timely fashion. All exams must be taken promptly at the required time. Requests for rescheduling an exam will only be considered if the request is made prior to the start of the exam, or else in an ``emergency'' situation with appropriate documentation.

    Similarly, labs are scheduled at specific, required times. You must attend the lab and turn in your results at that time, in order to receive credit. No credit will be give for ``late'' labs without advanced arrangements between the student and the TA.

    For homework and programming assignments, we wish to allow students to continue to work comfortably beyond the official deadline when a little more time will result in more progress, while at the same time discourage students from falling several days behind pace and jeopardizing their success on future assignments. % Our solution is the following exponentially decaying late formula (some have suggested that we should offer extra credit to anyone who fully understands this formula).

    We will consider an assignment submission ``complete'' whenever any part of the assignment is last submitted or modified. Any assignment which is not complete promptly by its due date and time will be assessed a penalty based on the formula S = R * e-t/6, where S is the grade given, R is the grade the work would have gotten if turned in on time and t is the amount of time (in days or fractions thereof) the work was late.


  • work turned in 1 hour late will receive over 99% of original credit
  • work turned in 6 hours late will receive 96% credit
  • one full day late receives less than 85%
  • work turned in four days late will receive 51%.
  • The above policies will be waived only in an ``emergency'' situation with appropriate documentation.

  • Computing at Loyola

    Students may develop their assignments for this course on a computer in a lab run by the Computer Science Department, in a lab run by Information Services at Loyola, or on a computer outside of Loyola, so long as it can be connected to the Internet.

  • Departmental Network and Labs

    An account has been created on our department's computer network for each student in this class. A username and password can be found by visiting this website. Please note that this username/password is not the same as the one used for this course's web site, and not the same as Loyola's campus-wide computer account maintained by Information Services.

    For those who do wish to use our department labs as a regular work place, this account allows use of machines in our department labs in rooms DH340, DH341 or DH342. With each account, a student is given a home directory (H:\MyHome) in which files can be stored throughout the course. Information on the lab policies, including a schedule of open hours, is available at www.cs.luc.edu/technology.html.

    Finally, each user can send and receive email from this account. As an example, a student with User ID ``aturing'' receives email sent to aturing@cs.luc.edu.

  • Computer Centers run by division of Information Services

    Other students may prefer to use some of the more general Loyola labs maintained by Information Services. These labs are convenient due to their locations across all Loyola campuses, as well as availability at times when our department labs are either scheduled for a class or filled with other working students.

    Most of the software available on our department network is also available on the IS network. One disadvantage of the campus-wide network is that students must save their files to a disk.

    To faciliate CS students working in IS labs, we have worked with IS to allow students access to the CS department NT file system from any of the IS labs at Loyola. This allows you to work in an IS lab, while saving and loading files directly to your Computer Science home directory. (Note: the drive letters used will not be mapped to the same letters as on our department machines.) Instructions can be found at: www.cs.luc.edu/lab/faq/atIT/itlabs.html

  • Last modified: 4 September 2002