SYLLABUS
CS
163: Data Structures
Summer
2013
Prerequisite: |
CS162 or consent of
instructor This means you should
have experience writing complete programs in C++ with experience creating
classes and building linear linked lists |
Instructor: Karla Fant
E-mail: karlaf@cs.pdx.edu
Message Phone: 503-725-5394
Office Location: FAB 120-19
Office hours: Wednesday
4-4:50 in FAB 120-19
Text: Data Abstraction and Problem Solving
with C++, Carrano
Lecture Notes: |
Lecture notes
and course power point slides are on D2L with a backup available on the class
web site: http://www.cs.pdx.edu/~karlaf |
|
Handouts: |
All handouts,
due dates, required videos and programming assignments can be retrieved from
D2L |
|
|
|
|
Disabilities: |
If
you have a disability and are in need of academic |
|
|
accommodations, please notify the instructor
immediately to arrange needed support. This includes any accommodations
required for taking examinations. |
|
Hardware: |
CS
UNIX systems (Solaris).
www.cs.pdx.edu |
|
Compiler: |
C++
language implemented by the g++
compiler. All
work this term will be done on unix! Allowed
editors: vi, vim, emacs, pico,
or nano Do
not use Dev Cpp, Visual
Studio or xcode No
IDEs are allowed |
|
Course Description:
Data
abstraction with formal specification. Elementary algorithm analysis. Basic concepts of data and its representation inside a computer.
Linear, linked, and orthogonal lists; tree structures.
Data structures are implemented as data abstractions. Sorting and searching
strategies. Data management.
Is CS163 the right
class for me?
CS163
is designed for students who have already programmed in C++ previously. In this class we use C++
to learn about data structures applying the syntax previously learned. You
should already be able to program using C++:
(a) classes
(b) pointers and
dynamic memory (new, delete)
(c) functions
with pass by reference
(d) linear
linked lists (traversal, creation, removal)
(e) and,
understand recursion at a conceptual level
Two Sections
of CS163
This term there are two
sections of CS163. Section 001 is an “in-class” section and Section 002 is an
“online” section. These classes are not
the same.
Section 001: In class
students will experience traditional lectures. Attendance to lectures and labs
are required. Lectures may be augmented with required course videos to allow
for in-class demonstrations. Videos will be
assigned due to the July 4th holiday.
Section 002: Online students
will have online materials available through D2L which will include lecture
videos, slides, quizzes, and discussions. Online students will be required to
take the midterm and final exams at PSU and demonstrate programming proficiency
during that time. Remote students will need to arrange for examination and
proficiency demonstrations early in the term through proctoring centers.
To
account for the fact that each of us may be watching the class at different
times, all announcements will be emailed to your pdx.edu email account
(please forward this email and read it frequently). The
lecture video links and handwritten notes are only available through D2L.
Which Lab?
There
are both in-class and online labs available. These labs are where we will
reinforce the materials learned in lecture. It is where concepts will be
practiced prior to applying them to your larger programming assignments.
The
in-class labs are those that have times and classrooms assigned. Students will
use their own computers (laptop, netbook, table, etc.) or check-out a PSU
laptop computer. All work will be done on unix.
Attendance to the labs is required.
***IMPORTANT
*** The
online lab is the “CS163L-TBA lab section”.
All materials are available on D2L and code files used can be found in D2L’s
“Locker” (there is a link on the home page of the CS163L shell). It is expected
as an online lab student that you are working individually with minimal
assistance. To gain assistance, contact your instructor (karlaf@cs.pdx.edu), the tutors (tutors@cs.pdx.edu) or plan to attend the in-class or
makeup labs. in-class labs where TAs and lab assistants
will be available. In-class labs are recommended whenever possible.
Course Materials:
All course materials
(except exams and textbooks) are available electronically and programs can be
submitted entirely electronically, so there is no requirement to come on campus
to turn in your work! However, the on-campus labs have tutors that can help with
the assignments – so you might consider scheduling some time to work at PSU.
1. D2L under the Course Content tab http://d2l.pdx.edu
2.
CS163’s Home page www.cs.pdx.edu/~karlaf
Questions?
If you have questions, the
best approach is to post messages on
Desire2Learn or send email directly to karlaf@cs.pdx.edu.
Sending D2L Mail will not provide for a quick response as it is an internal-only
mail system – it is not “email”.
Electronic mail works the
best if you have a question that you encounter as you work on the programming
assignments. Please be advised that questions should be clearly formulated and
it should be clear from the question that you have attempted to solve the
problem on your own. Do
not post code online or on Desire 2 Learn. Do not, unless explicitly
asked by the Instructor, simply email your program and expect a response!
Instead, talk about what problems you are encountering and what you have done
to make progress. Make
sure to provide your full name and
indicate which class you are in when
sending a message.
Be careful when seeking
help from others. You should seek help from (a) instructor, (b) TA’s, and (c)
Tutors. We are here to work with you – either in person or remotely. But,
beyond this be careful. Do not to share your code with others! Never post your code in the D2L discussions,
the Web, social networking sites, or the web. Never give your assignments to any other PSU students, regardless
of their situation. Never email
your code to anyone except your instructor. Performing any of these actions
will result in a ZERO grade on that assignment.
If you have administrative
questions and need to talk directly with the Instructor, send mail to: karlaf@cs.pdx.edu.
Office hours listed on
this syllabus are also highly recommended.
Since
I received 100’s of email messages, make sure to put “163 Question” in the
subject heading.
Goals:
To acquaint students with structures
used in C++ for the storage and manipulation of data. The concept of data abstraction and the
problem of building implementations of abstract data types are emphasized. Both static and dynamic implementations of
major structures are presented and the advantages and disadvantages of each are
discussed. Structures include lists of
several types, stacks, queues, trees, binary trees, B-trees and graphs. Recursion and key transformation (hashing)
are examined. Students are encouraged to examine algorithms and to make
judgments about the practical and social application of these algorithm
concepts to large scale programming projects; the course stresses the
importance of quantitative methods in designing software.
Material to be Covered:
•
Material to be covered will include data abstraction with formal
specification, elementary algorithm
analysis, basic concepts of data and its representation inside a computer,
linear linked and orthogonal lists, tree structures, sorting and searching
strategies, and data management.
Computing Environment:
The CS UNIX systems (known as Solaris) using the g++ compiler which must be used for all assignments. Login remotely using ssh, putty, or terminal programs to www.cs.pdx.edu. Dev Cpp, or Visual C++ are not acceptable. Do not use the
excuse but it runs at home on my PC.
Approach:
You must receive a passing
grade in each of these three learning outcomes:
1.
Proficiency in Programming (in C++)
a. 5 graded programming assignments
b. Midterm and Final Syntax Proficiency demonstrations
(Pass/No Pass)
2.
Problem Solving and Critical Thinking (via participation)
a. Pre-Lab exercises (Pass/No Pass)
b. Participation (Pass/No Pass)
i.
Section
001: Attendance and Lab Participation
ii.
Section
002: Online Lab Participation
3.
Proficiency in the Course Concepts
a. Examinations (Midterm, Final)
b. Section 002: Watch the course videos
each week. D2L quizzes unlock the next topic content area (Pass/No Pass)
Policies
for Assignments:
•
Course requirements consist of five
assignments which include written components and programming components in C++
that comprise (35% of your grade). The programming portion provides experience
building correct implementations of abstract data types.
• The
written components include discussions on algorithms, ethics, and style issues.
These must be completed to get a grade on each assignments.
These must be your own work and may not be copied from the web or other
students. Be careful to not plagiarize.
• For
the programming component, 20% of your grade is based on the program style,
comments, and documentation provided with the program. Make sure to follow the
STYLE SHEET!
• 20% of the program grade is based on
the design write-up. The design write-up must be a minimum of 1 page or at least 600 words. Refer
to the style sheet for information about what should be discussed.
• Partial credit will be
given for incomplete work. However, 25 points will be automatically deducted
for programs that cannot successfully compile and link. If you find you are
continually having problems meeting the due dates, make an appointment.
• ***NEW RULES *** LATE assignments will
be accepted: one week late, for 5% off (except for the last assignment). There will be situations where I will
announce changes to the due dates in class and posted on the web site. Assignments may not be turned in
later than one week late. There are no exceptions. Turn in what you
have after one week late.
•
Each student is expected to submit only
original work. Software and passwords must be kept confidential. Any person who
violates these will receive a grade of
zero on an assignment which will result in an F for the course and a letter
will be sent to the head of the CS Department. Identical programs will be
treated as copying even with cosmetic changes.
• Submit assignments
electronically to the D2L Dropbox (make sure to
select the “submit” button after uploading the files, otherwise your submission
will be lost). It is important to submit your assignment to the correct D2L
Dropbox, otherwise it cannot be graded. For
backup, please also email your assignment’s files as attachments to karlafgr@cs.pdx.edu. You may need to use a file transfer
program –
you can talk with the tutors (tutors@cs.pdx.edu) to get more
information.
Policies for
Demonstrations: Pass/No Pass
• In-class students participate by attending class lectures and labs.
• Pre-lab exercises must be brought to the labs already completed. They are designed to prepare you for the labs, and are Pass/No-Pass.
• Online Students participate by watching videos and uploading completed pre-lab exercises onto D2L.
• All lab materials can be found on the D2L Lab
shell (CS163L)
• Students enrolled in online labs are expected to spend 1 hour and 50 minutes each week on the actual lab work. It is not expected that you complete these labs, but make as much progress as this time allows. If a concept is not clear, then arrange with the instructor to attend one of the lab sessions or contact the tutors (tutors@cs.pdx.edu) for additional support.
• All lab work must be done on unix (not linux) using vi, vim, emacs, pico, or nano as the editor. By the final proficiency demo, it is expected that you will be using vi, vim or emacs (not pico or nano).
Policies
for Lecture Videos – Pass/No Pass
Policies for Exams:
• It is against
department policy to give final exams early (no exceptions!). Exams will all be
closed book, closed notes.
Administrative
and Grading Policies
• Failure to turn assignments in on
time will result in a zero for that assignment. Assignments will not be
accepted after the last day of class.
Demonstrate Proficiency in C++ -
Midterm
Demo -
Final |
Pass/No Pass |
At PSU or by Proctor |
Participation |
Pass/No Pass |
Section 001: Attendance Section 002: Online Collaboration |
Keep up with Course Material |
Pass/No Pass |
Every week attend lecture or watch Videos and Read Chapters |
- Written Homework - Programming Projects |
||
Midterm |
25% |
At PSU or by Proctor |
Comprehensive Final |
40% |
At PSU or by Proctor ***
Must receive a Passing score of 65% to pass the class *** |
• No Basis for a Grade – A no basis for a
grade in this class only applies when a student has not turned in any work, not
taken any exams, and have not participated on D2L. If you have complications
and cannot finish the class, make sure to drop or withdraw. Otherwise you will get a grade in the class.
• INCOMPLETES will be given only when a
minimal amount of work remains to be completed, only for a valid reason and
only for a fixed time period. Do not expect an incomplete in this class.
• CHEATING: Each student is expected to submit only
original work. Any person who violates
these requirements will receive a grade of zero for an assignment which based
on the above grade requirements will result in an F for the course. A
letter will be sent to the head of the CS Department.
Students will receive a zero on an
assignment if any of these activities take place:
1. Student accepts an assignment and/or
program from another student
2. Student supplies an assignment and/or
program to another student
3. Student posts the assignment and/or program
on the web, social networking site, or D2L discussions
4. Student shares their password with
another student at PSU giving that student access to their assignments and/or
programs
5. Students work together on assignments
and turn in the same and/or similar assignments.
6. Student turns in work that was obtained
from other sources such as the web, friends, tutors or TA’s.
7. Student leaves work available for others
to copy from
8. Student attempts to purchase programs
from others (in person or electronically).
The work you
submit must be your own. It is not acceptable to hand in assignments in which
substantial amounts of the material was done by someone else. You must be especially
careful that in the process of discussing problems with other students that
they do not inadvertently end up using your work. In such an event, all
students involved will receive a zero on that assignment.
• Keys
to Success:
1.
Login
to D2L to check grades and ask questions.
2.
Keep
up with Materials (readings, assignments, labs)
3.
Watch all class lecture videos
each week (online)
4.
Attend all class sessions (in-class)
5.
Practice Programming Constructs
6.
Perform the pre-lab exercises
to get ready for each construct
7. Ask
Questions! Use Tutors, use D2L discussions, and
correspond with me!
Try to Exceed my
Expectations!