280 likes | 293 Vues
Learn C programming fundamentals, data structures, and algorithms for assignments and exams. Explore lecture slides and course policies. Develop analytical and problem-solving skills. Uphold academic integrity.
E N D
CS 261: Data Structures Summer 2007 Location: WNGR 153 Time: M-F 11:00 – 11:50pm * Slides partly from Dr. Ron Metoyer
Instructor • Venkata Janardhan Rao ( Jana ) • Office: KEC 2048 - #19 • Office Hours: • TBD • or by appointment
Recitation Sections Recitation sessions will be used to provide: • Instruction in C programming (fundamentals, pointers, compiling, techniques, style, etc.) • Another resource for further learning/discussion of concepts, data structures, and algorithms • Exam review, return They will help you acquire programming skills and knowledge needed to complete assignments, worksheets, and exams
Textbook • Data Structures – Schaumm’s Outline Series • Readings assigned from Dr. Budd’s lessons • Reference book for C • C/C++ Programmer’s Reference (Third Edition), Herbert Schildt • Programming with C – Byron Gottfried, Schaumm’s Outline Series
Course Web Page http://classes.engr.oregonstate.edu/eecs/summer2007/cs261/ Check this web page often!!! It contains: • The schedule for assignments, midterms, exams, and lectures • Updates on assignments • Lecture slides • Course Policies • ...and more...
Course Lecture Notes • Will typically be available either an hour before class or shortly after • If you would like a copy to scribble on during class, you are responsible for printing it out • Not all notes will be in .ppt format – we will do some board (or overhead) work
Blackboard • We will also use Blackboard for: • Reporting your grades • Discussion Forum • To login to Blackboard, go to http://my.oregonstate.edu and login with your ONID id
Prerequisite Courses: CS 162 MTH 232
Prerequisite Programming Skills : You will learn to program in C (not necessarily in class!!) We will spend a couple of lectures introducing C You will then be thrown to the lions Really...it’s not that bad The best way to learn – write a lot of code
Prerequisite Skills & Characteristics: • Analytical skills, problem-solving ability • “Teaching” ability • Planning/scheduling ability • Flexibility, patience, persistence • Integrity, responsibility
Academic Honesty Honesty is absolutely essential in order for learning to take place. Your approach to academic work will form the foundation of professional integrity in your career.
Academic Honesty • Honesty: • Absolutely essential in order for learning to occur • Will form the foundation of your professional integrity in your career • Ok • Discuss concepts, general approaches, strategies • Discuss bugs • Not Ok • Debugging someone else’s code • Sharing code, homework answers, etc. – e-mail, verbal, etc. • Common excuse: “We worked on it together” • Common response: Divide credit among participants • Default policy for cheating: an F for the course • Expected to produce and understand all aspects of your own work
Collaboration • You are expected to do your own work! • But, you are allowed to verbally discuss general approaches and strategies with other students, TAs or the instructor • Do not simply let someone else tell you how to solve the problem • Don’t let someone else copy your work
Collaboration • If you give or receive help you must describe that help in the program header block (more on this later) • If you list another student as a collaborator, that student must also list you as a collaborator.
Academic Honesty Things you are NOT allowed to do: • Use code (printed or electronic) from other students • Use code from the Internet (unless explicitly allowed by the instructor) • Give your code (printed or electronic) to other students • Ask another student to troubleshoot your code • Help another student to troubleshoot their code
Examples of academic dishonesty • Copying code (electronically) from any source and then changing… • the header block • the variable/method names • the comments • etc.
University and Department Academic Honesty Policy • University Academic Honesty Policy: http://oregonstate.edu/admin/stucon/achon.htm • CS Academic Honesty Policy: http://www.eecs.oregonstate.edu/undergraduate/cs/dishonesty.html
What if I need help on assignments? • Post to the discussion forum on Blackboard (make sure you don’t post code that gives the answer away) • See me in my office hours or make an appointment Start your assignments early! Don’t wait till the day before the due date.
Grading • Assignments – 30% • Quizzes and Homework's – 20% • Midterms – 20% • Final – 30%
Grading policies • Allowed only 1 late assignment. The late assignment must be submitted by due date + 48 hours. • You have 1 week after the exam or project has been returned to the class to question your grade. • If you cannot take an midterm/exam at the scheduled date/time, contact the instructor at least 1 week in advance to arrange for an alternate test date/time. • Students who miss a midterm or final exam without an excused absence will be given a mark of 0.
Handing in Programming Assignments • Make sure you have an ENGR account. If you don’t go to https://secure.engr.oregonstate.edu:8000/teach.php?type=want_auth • Log in at the website above • Click Submit an Assignment • Choose the assignment from List of Assignments • Browse for the files to submit • Select the relevant file(s) • Click Submit • Verify successful submission
Submitting programs Must be submitted electronically by 11:59 PM on the due date. Be sure to submit all files that are required to run your program.
Program documentation Always identify yourself and the program at the top of the main file. /* <your name> <date> <collaborators, description of help> <project identification> <development environment> <project description> */ Always identify yourself and the file contents at the top of other .h and .c files. /* <your name> <date> <class description> */
Program documentation Always provide a description for each procedure / function. /* <method description> <preconditions> <postconditions> */ Always use self-documenting code. Provide additional comments as needed. (Usually comment logical sections of code.)
Programming Assignments • Must also be copied to your ENGR (or other OSU account) before the deadline. • If you submit the wrong files and you have not copied your project to your ENGR account (before the project deadline), you will not be given an opportunity to resubmit and you will get a zero for that assignment. • We do NOT accept modification dates on personal computers as proof that the files were done on time.
Program Development • I will be using the gcc compiler on unix to grade your assignments • You may develop on any platform ...such as Microsoft Visual Studio, however, you must verify that it compiles and runs with gcc before turning it in.
Office Hours Policy • I will help you understand the assignments • I will only help you debug code if you can demonstrate confidence in supporting code • If function A calls function B, you must demonstrate that function B is behaving correctly (ie...demonstrate with a test case!!!) • I won’t help debug if you’re not providing unit test cases
Learning Objectives At the completion of the course, students will be able to... • describe the properties, interfaces, and behaviors of basic abstract data types, such as collection, bag, indexed collection, sorted collection, stack, and queue. • read an algorithm or program code segment that contains iterative constructs and analyze the asymptotic time complexity of the algorithm or code segment. • state the asymptotic time complexity of the fundamental operations associated with a variety of data structures, such as vector, linked list, tree, and heap. • recall the space utilization of common data structures in terms of the long-term storage needed to maintain the structure, as well as the short-term memory requirements of fundamental operations, such as sorting. • design and implement general-purpose, reusable data structures that implement one or more abstractions. • compare and contrast the operation of common data structures (such as linear structures, priority queues, tree structures, hash tables, maps, and graphs) in terms of time complexity, space utilization, and the abstract data types they implement .