Computer Science 214 Detailed Information

Description

The purpose of this course is to broaden the student's view of software development. Topics include an scripting languages, libraries, and tools and techniques for program development and maintenance.

A theme for this course is "quality programming in the small". The idea is to teach the tools and techniques to write a quality component, whether it is a stand-alone program to do some small task, or it is to be a part of a larger project. These are fundamental principles/skills required by professional programmers.


Prerequisites

Cmpt115 or Cmpt117, and Math 110


Instructor

Dr. Tony Kusalik, Computer Science
email: kusalik‍@‍cs‍.usask‍.ca (do not cut-and-paste this address as it has hidden, "garbage" characters in it)
office: Thorv S424 (in the Spinks Addition)
telephone: 966-4904

Office Hours

The professor is typically available immediately after the class for questions, advice, etc.

The professor has combined advising time / office hour every Friday between 12:00 and 13:00. You can sign up for a reserved time slot via the system for academic advising, or you can just "drop in". Priority will be given to students who make an appointment.

The prof is available to meet students at other times. Simply send an email message and set up an appointment!

Finally, remember that, if you need help, e-mail works 24 hours a day — and you'll probably even get a response in short order! Alternatively post something to one of the class forums on moodle.

Teaching Assitant

Krzysztof Voss

email: kmv633‍@‍mail‍.usask‍.ca


Schedule

Class day & time: Tuesday and Thursday, 11:30 a.m. to 12:50 p.m.
Class Location: Arts 263
Class duration: September 6 through December 4, 2012
Labs start: week of September 11th
Midterm Exam:

in class, October 23, 2012

(the last day for withdrawls is November 15th)

Note that the professor teaches another class immediately prior to this one. Hence, it will be difficult for him to be available for questions prior to class. However, he will be available immediately after class.


Texts And Course Material

Required: Practical Guide To Linux Commands, Editors, And Shell Programming, by Sobell, 2009, ISBN: 978-0-13-136736-4.. The Library has this publication on Reserve for the class.
C++: The Complete Reference, 4th Edition, by Schildt, 2002, ISBN: 978-0-07-222680-5.. The Library has this publication as an E-book..
Alternatives: UNIX: The complete reference, 2nd Ed., by Rosen, 2007, ISBN: 978-0-072-26336-7. Available as an E-Book through the UofS library web site..
C/C++ programmer's reference, 3rd Ed., by Schildt, 2003, ISBN 978-0-072-22722-2. Available as an E-Book through the UofS library web site.

Grade Allocation

participation 2%
lab exercises 8%
assignments 20%
written midterm 25% (October 23, 2012)
final exam 45%
Important Notes
  • The participation grade will be based on evidence of any constructive and/or contributive involvement in the on-line discussion forums for the class.

  • Laboratory exercises and assignments are required (mandatory) elements of the class. Therefore, in accordance with the University's "Academic Courses Policy on course delivery, examinations & assessment of student learning" lab exercises and assignments must be completed in order to achieve a passing grade. For instance, students who skip labs or don't bother doing assignments will not pass the class no matter how well they "ace" the final exam.

  • The final exam is another required element of the class. Failure to write the final exam will result in failure of the course.

  • Students must have a combined average of at least 30% on all other class work and in-term exams to be eligible to write the final exam.

  • If a student does not write the midterm exam, the corresponding portion of the final grade allocation will be re-assigned to the final exam.

  • If students know in advance that they will miss a lab, an assignment, or exam due to extenuating circumstances, they should contact the professor well in advance so that alternate arrangements can be made.

Assignments

There will be approximately 4 assignments in the class. They will be harder and take more effort than the exercises in the Laboratory. Students will typically have 2 to 3 weeks to complete each assignment. Assignment solutions will be submitted electronically. Late submissions will be accepted, though they will be docked accordingly. The late penalty will be determined using an exponential function.

Important Note

Instructional Laboratory

Laboratory sections and times are as follows:

Section DayTime
T01 Tues 13:00-14:20
T03 Tues 14:30-15:50
T05 Thur 13:00-14:20

All tutorials are held in room S311 in the Spinks Addition of the Thorvaldson Building. Labs will start on the week of September 13.

The laboratory session is for practical experience in the application of concepts introduced in the lectures. Lab periods are 80 minutes in length. An initial portion of the lab time may be devoted to providing introductory information. The remainder of the period will be for completion of the laboratory exercise. The lab instructor will be available during this time to provide assistance as necessary.

Students are to attend one laboratory session each week. Each week's lab component is to be completed in the time period specified and a lab submission will be required at the end of the lab session (or shortly thereafter). The lab solution will be submitted electronically.

Important Note

Laboratory Resources

The main computation resource for this course will be the LINUX operating system as provided by the tuxworld(tuxworld.usask.ca) set of computational servers. Occasionally, it may be the case that a lab or assignment must be completed on a Mac OS X system in the Computer Science instructional laboratory. Often, students will be able to use either LINUX or Mac OS X. To this end, many of the LINUX and Mac OS X workstations in the Computer Science instructional laboratories (rooms THORV S311, S320) and open-access laboratories (rooms THORV S315, S360) can be used in completion of lab exercises and assignments. You can also access tuxworld from a computer elsewhere on campus, or off-campus.


Topic Outline

The following is an outline of the main topics to be covered in the class

  • LINUX/UNIX commands
  • Bourne shell scripting
  • AWK programming
  • Code readability
  • Testing
  • Debugging
  • Test-driven development
  • Separate compilation
  • Version control systems
  • Profiling and optimization
  • Regular expressions
  • Portability
  • Additional topics, as time permits
    • Pair programming
    • Technical writing

Policies

  • All students must be properly registered in order to attend lectures and receive credit for this course.
  • Students activities involving University computational facilities are governed by the Department of Computer Science Laboratory Policies
  • The standard University of Saskatchewan Department of Computer Science Academic Honesty Policy and the University's regulations on academic integrity apply to this course.

    All assignments and laboratory exercises are to be completed on an individual basis, unless specified otherwise. For the purposes of this class, and this class only, the interpretation of what constitutes "an individual basis" is:

    • You may work on certain aspects of an assignment or laboratory as a member of a group. However, other aspects of your work must be done independently. Which aspects must be done independently are described below. In any event, it is good practice to clearly identify the other members of the group in your submission, and acknowledge the contributions of those group members (who contributed what).
    • You may work within a group to verify that the members of the group have understood the problem. You may even confirm your design and results together. However, each of you must perform the implementation phase independently.Failure to perform an independent implementation constitutes academic dishonesty.
    • You may work within a group on testing strategies and criteria for the selection of test cases. However, each of you must perform the testing phase independently. Failure to perform an independent test constitutes academic dishonesty.

    • Each of you must compose your documentation (internal documentation, external documentation, and testing documentation) independently. Failure to compose your own documentation constitutes academic dishonesty.

    Please understand that, without the practical experience gained when performing your own implementation, testing, and documentation, you will also be at a significant disadvantage in your examinations when compared to those students who did. It will also be a serious detriment to you in subsequent courses, and in an employment situation.


kusalik@cs (dot-usask-dot-ca)