CS 345

v.20170116 SPRING 2017

CS 345: Data and File Structures

Department of Computer and Mathematical Sciences

New Mexico Highlands University

Instructor

Richard Medina, Ph.D.

Office: HSCI 291 : 505-426-2277 : rmedina@nmhu.edu

Office Hours: MTW 2-4pm (or by appointment)

Time and Location

Lecture: Mondays and Wednesdays: 12:30 - 1:45pm in HSCI 282

Lab: Wednesdays: 2 - 3:50pm in HSCI 282

Midterm Exam: Wednesday, Mar 15 @ 12:30 - 1:45pm in HSCI 282

Final Exam: Friday, May 12 @ 7:30 - 10:30am in HSCI 282

About This Course

[from the course catalog] This course is intended to provide an intermediate introduction to methods of organizing data in memory and on peripheral devices and of accessing this information in an efficient manner. The course gives students experience with searching and sorting, trees, binary search trees, graphs, sequential files, merging files, and file update procedures. Prerequisite: CS 245 with a minimum grade of C. This course will also introduce basic algorithm analysis with respect to common data structure implementations used in the field.

\pagebreak

Major Topics

  • basic algorithm analysis
  • searching and sorting algorithms
  • trees, graphs, heaps, hash maps
  • application of data structures and algorithms to data file processing
  • application of design patterns

Intended Outcomes

  • ability to perform basic algorithm analysis
  • understand the purpose of algorithm analysis
  • ability to implement common data structures in the field of computer science
  • understand and apply testing and debugging techniques
  • increase ability to design and implement robust and efficient programs
  • understand and apply common design patterns for processing large datasets

Required Texts

Data Structures and Algorithms in Python by Goodrich, M. T., Tamassia, R., & Goldwasser, M. H. (2013 edition). Hardcover ISBN: 978-1-118-29027-9 eBook ISBN: 978-1-118-54958-2

Other handouts provided by the Instructor

Desire2Learn ==> https://nmhu.desire2learn.com/d2l/home

Instructor site for updates and schedule ==> http://rmedinahu.github.io/

Course Requirements

  1. Regular (daily/weekly) access to NMHU Desire2Learn for this course is expected
  2. Attendance/Participation is expected in both lecture and lab. For grading purposes, attendance is computed as, total meetings - number of absences / total meetings
  3. Programming Assignments - minimum 1/wk.
  4. Midterm and Final Exams (comprehensive)

\pagebreak

Grading

  • 10% Attendance
  • 45% Programming Assignments
  • 45% Midterm/Final

Homework Policy

It is expected that deadlines for programming assignments will be honored. Late assignments will always be accepted and assessed. However, point deduction for late assignments will be calculated as follows:

  • less than two days late ==> 10% reduction in assessed score
  • less than seven days late ==> 30% reduction in assessed score
  • more than seven days late ==> assignment will be assessed but no credit will be given :(

All programming assignments should be submitted to the appropriate dropbox in the Desire2Learn website for this course or to your github repository (as directed by instructor).

Policy on Shared Code

Assigned homework/programming assignments are to be strictly the work of each individual student. However, I encourage students to help each other and benefit from collaboration. This DOES NOT mean copying a fellow student’s code and replacing their name with yours. I can spot this practice immediately and will not give credit to any submitted code that follows that pattern.

Resolution:

If you and other students work together on a solution:

a. All parties must indicate in source code comments (at the top) the nature of the collaboration, who was involved, and what was gained by the collaboration.

b. Your source code cannot be a COPY of your collaborators code. I want you to develop your own coding and problem solving skills. You will not develop mad skills if you simply copy and paste or worse, save as

c. Take (a) and (b) seriously.

How to collaborate? Discuss ideas, procedures, algorithms, and design in the abstract. The implementation is still up to you.

\pagebreak

Grading Criteria for Programming Assignments

  • Each assigned program is worth 100 points. The criteria is as follows:

    • 30 points = Contains no syntax errors (it COMPILES)
    • 20 points = EXECUTES without runtime errors
    • 40 points = Program is CORRECT (performs as specified by instructions)
    • 5 points = Source code format follows acceptable style guidelines (indentation, whitespace, etc.)
    • 5 points = SUBMITTED ON TIME

How To Turn In Your Programming Assignments

All programming submissions should include the following on the first two lines of your source file as comments:

Example python source file:

# Medina, Richard 1-19-2017
# Homework 1
# I worked on the printmessage function with Guido. He showed me a way to format the string.

def printmessage():
    print('Hello. This is a sample program.')

printmessage()

Your source files should be named to include your last name first initial followed by hw assignment number as demonstrated below. DO NOT USE SPACES in file names please!

Example file name:

	medinar-hw1.py

A Note About CS 345 Lab

Lab is mandatory and is intended to give you the opportunity to work out concepts and skills related to the weekly topics addressed in lecture. I take the approach that the lab is open to collaboration among students (help each other, ask each other). The Instructor and/or the Teaching Assistant are there to provide additional help and feedback during each lab session. The lab also motivates me to assign more challenging homework!


© 2017 - . All rights reserved
Built using Jekyll