data structures, algorithms, and generic programming course introduction zhenhai duan cop 4530/cgs...
TRANSCRIPT
Data Structures, Algorithms, and Generic Programming
Course Introduction
Zhenhai Duan
COP 4530/CGS 5425
1
Instructor
• Professor Zhenhai Duan ([email protected])• Office: 162 LOV • Office hours:
– 2:00PM to 3:00PM, MW– Or by appointment– Email: [email protected]
• Class website:– Use blackboard– http://campus.fsu.edu– Discussion board
• Research area– Computer networks and network security
2
Teaching Assistants
• See “Instructor Information” on Blackboard
3
Course Rationale• So far…you know how to program…• However, to build large and complex software, you need more
powerful tools• Your software should be…
– Efficient in both speed and resource usage– Maintainable – Reusable
• Programming efficiency in broader terms– Running time– Computing resources– Developing time– correct results vs. closest results (in limited time)
• But how do we achieve programming efficiency?
4
Course Coverage
• Data structures– Common Lego pieces (building blocks)– Methods of organizing large amount of data
• Algorithms– A sequence of computational steps transforming input into
output– Popular methods to solve problems
• Generic programming– A programming paradigm to reuse code
5
Learning Objectives
• Data structures– Abstract data types (ADTs):
• Vector, list, stack, queue, table, map, trees, graphs …– Iterators associated with ADTs
• Algorithms– Correctness analysis of algorithms– Complexity analysis of algorithms
• Generic programming– Implementing data structures using class templates – Implementing algorithms using function templates
6
Prerequisites
• COP 3330: Object-Oriented Programming• MAD 2104: Discrete Mathematics.• Pre- or Co-requisite: CDA 3100: Computer Organization I.
• This course requires that you should be proficient with C++ and object oriented programming concepts.
• You also need to have a user-level knowledge of Unix, and be comfortable working in a Unix environment. – We will review Unix programming environment including
editors, compiler, debuggers, and makefiles in recitation
7
What You Should Already Know
• Classes, including constructors/destructors• Dynamic allocation and de-allocation of objects• Operator/function overloading• Parameters for functions, methods, and operators• Parameter passing by reference/value• The C++ I/O system
– We will review the basics in recitation
• Pointers and pointer arithmetic• Dynamic memory allocation/de-allocation
• These are the minimum requirements
8
Course Material• Required Textbook :
– Data Structures and Algorithm Analysis in C++ (4th edition) by Mark Allen Weiss.
– Publisher: Addison-Wesley; 2013 (using c++11)
• Recommended Reference Textbook : – Absolute C++, Walter Savitch, Publisher: Addison Wesley– C++ Primer, Lippman, Lajoie, and Moo. Publisher: Addison
Wesley– C++ How to Program (Harvey & Paul) Deitel & Associates.
Publisher: Prentice Hall
• Other recommended textbook– Cormen, Leiserson, and Rivest, Introduction to Algorithms
• Lecture slides posted at the class website
9
Workload and Grading Policies
1. Five programming assignments – 45%– 9% for each assignment– Substantially harder than early classes
2. Two Exams – 50% – Midterm: 20% – Final Exam - 30%
3. Quizzes – 5 % Possibly given during both regular class and recitation sessions We may have both announced and unannounced quizzes
4. All components will be counted towards final grade
10
Final Letter Grades
• Requirements to get C- or better in final letter grades – At least 60% for both exams and projects, respectively– At least C- for certain components of two capstone projects
• Data structure knowledge• Recursive algorithm usage
• Link to final letter grades
11
Important Dates
• Link to important dates in blackboard– Subject to change– Changed will be announced in Blackboard/class– After a project is announced, we will discuss the project
during recitation in that week.
• Assignments – Substantially harder than assignments in early classes– Typically 2 to 3 weeks per assignment– Start early– Ask questions early (use of discussion board)– Submit on time (and it is your responsibility to submit the
correct version of your program)
12
Accounts• Computer Science account (<yourid>@cs.fsu.edu)
– For doing assignments (linprog1 to linprog4.cs.fsu.edu)– http://www.cs.fsu.edu/sysinfo/newstudent.html
• FSU account (<yourid>@fsu.edu)– For receiving class announcements– For submitting assignments– For getting your grades– http://its.fsu.edu/Students
• Access to blackboard – For class materials, discussion board, grades etc.– Through your FSU account– http://campus.fsu.edu
13
Academic Integrity• Means
– No copying from anywhere– Don’t solve assignments for others– Don’t ask/give solutions.– Protect your code– Don’t distribute assignments/exams to others (in a later semester)
• Moss: An automated tool for comparing code will be used.
• Please read the policies on course web page
• Dishonesty Not fair to others.– You may get a grade of F.
• Its better to submit an imperfect assignment than to submit a copied one.– Partial points are always possible
14
Some Past Honors Code Violation Cases
• A group of students studied together, with one student providing code as reference to another student
• A student gave code to another, after the deadline, for self-study
• A group of students worked on a project together• Some student put code online (github) and forgot to
enforce access control– You need to protect your code
• A student obtained solution online (paid or not)– If one can obtain, so can another
15
Course Policies
• Attendance is mandatory– For both regular classes and recitations– No make-up for quizzes, – All quizzes will be included in determining final letter grade– Good attendance = missing 3 or fewer lectures– Let the Instructor/TA know in advance when possible
• Missed exams:– No makeup exams will be given
• except in emergencies with appropriate document
• Incomplete– No incomplete grade “I” will be given
• Except in emergencies with appropriate document
16
Recitation
• Attendance is required
• What are covered during recitation sessions– Programming assignment discussion– Unix programming environment– C++ STL containers and algorithms– Example programming problems and solutions
17
To ask or not to ask?
• Me and TA are not psychics • Please let us know if…
– You are lost– You don’t understand something– You don’t have the background– Class can be improved in certain ways
• Feel free to give anonymous feedback online– Though direct feedback is always welcome!
• Use class discussion board
18
Reading Assignments
• Sections 1.1 – 1.5• Refresh your knowledge on C++ (pay attention to
new features in C++11)
19