Published using Google Docs
Syllabus
Updated automatically every 5 minutes

Introduction to Computer Science II (CMPS 1600)

Spring 2017, 4 credit hours

 

Class meeting times:

M, W, F             11:00-11.50 am (Sec. 1, 2, 3): BO 104

T (Lab)               9:30-10:45 pm (Section 1): GI 325

             12:30-1:45 pm (Section 2): GI 325

                           8:00-9:15 am (Section 3): GI 325

                                                                        

 

Instructor:  Dr. Anastasia Kurdia

Office: Stanley Thomas 305c

e-mail: akurdia@tulane.edu

office phone: 504-247-1550

Office Hours: Monday, Thursday 2-3 pm.

OH start the first day of classes and end on the last day of classes.  No appointment is necessary to attend regular office hours. Additional help is available in person or via skype (by appointment), and via email.

 

 

Assistants:

Jaelle Scheuerman  (jscheuer@tulane.edu), Andrea Martin (amartinh@tulane.edu), Neil Barot, Erin Stafford.  Help session hours are posted on the course website.

About CS department and program: http://tulane.edu/sse/cs/

 

Learning resources:

Required textbook -- custom online interactive book (Zybook):  

  1. Sign up at zyBooks.com
  2. Enter zyBook code TULANECMPS1600KurdiaSpring2017
  3. Click Subscribe

The cost to subscribe through 05/30/17 is $63. Refunds are provided if class is dropped within official withdraw deadline. You need to get the book and start completing the readings on the first day of class. If you’re testing waters and are not sure whether you will stay in the class, get the book now and get a refund if you decide not to continue with the class.

Participation:

We will be using Arkaive to automatically track attendance. Go to https://arkaive.com  (or directly to your appstore) and download a student app on your smartphone. Then sign up for the class:   enrollment code 8Z7F  

 

Lecture slides and additional materials will be provided.

 

Overview: What is this course about?

This is the second course in the introductory course sequence and is the continuation of CMPS 1500. While CMPS 1500 focused on a broad array of topics in computer science and a single language (Python), this class will focus on several core topics in the design, analysis and implementation of computational tools. From the practical perspective, we will learn different paradigms of software development and their associated languages. From the theoretical perspective, we will explore in greater detail some of the topics covered in CMPS 1500 (such as abstract data types), along with new concepts such as program correctness. A key focus of this course is shape the initial, broad exposure to computer science from CMPS 1500 into a specific set of skills that can be used to design, reason about, and implement computational tools. Some of the key topics we will cover will include functional, object-oriented and imperative programming,  data structures, abstract data types and object-oriented design, program correctness and verification.  We will explore these topics in the context of several applications and programming languages (e.g., Java, C/C++, Python, Haskell, etc.). The high-level goal of this course is to train students to be able to draw from a versatile set of skills, which in turn will provide a strong foundation for further study in computer science.

Our  goals

Upon completion of this course, successful students will be able to:

·         Apply theoretical and practical concepts of software development to develop basic computational tools (e.g., for networking, cryptography, modeling in computational science, and web-based tools).

·         Outline the similarities and differences between a number of programming paradigms.

·         Select  the most effective programming approach for a given computational task.

·         Develop and verify software programs.

 

Course format and work

Lectures Lecture sessions will be dedicated to overview of particularly interesting aspects of the new material, discussions, individual and group activities.  We will use slides and board. For most of the classes you will not need to bring your laptop to class; exceptions will be announced.

As the slides become available, they will be posted on the Canvas page of the course.  

Labs (Collaborative discussion) One of the four scheduled classes each week (usually on Tuesday) will be a lab taught by our teaching assistant. This class, for which attendance is mandatory, is especially important for review and practice purposes. You will usually work on guided exercises  at your own pace, periodically checking with the TA, and finish the exercises at home. Completed labs will be due on Monday of the following week on Canvas. Labs will be submitted individually, but you are welcome to practice pair programming, respecting  Academic Integrity policy.

Occasionally the labs and lectures may be switched, or an additional lab may be added during the week. These changes will be announced in class and via email. You will need to bring your charged laptop to the lab.

Optional help sessions  During the week there will also be optional help sessions led by the TAs.    

Zybook homework and warmups (Individual) A large part of new material will be introduced through at-home reading of the material provided in the online interactive Zybook textbook, and will be reinforced through Zybook activities and homework, that will be before (almost) every class. These assignments are posted on the course schedule.

Quizzes (Individual) About every 2-3 weeks there will  be closed-book/closed-notes quiz given during the first 15 minutes of your lab section. Arrive to lab on time to have adequate time to complete your quiz. The quizzes will cover reading or lecture topics. The lowest  quiz grade will be dropped. If you miss a quiz with permission, that quiz will not count toward your final grade. Make-up quizzes won’t be offered.

Programming projects (Individual) There will be several individual programming assignments during the semester.  Most projects will have an intermediate deadline.

Exams There will be one midterm exam during  lab session and one comprehensive final exam during the time assigned by the Registrar. The midterm and the final exam will be closed-book and closed-notes;  you are allowed to bring a hand-written helper sheet to each exam (one letter page double-sided).  

Late work  At the beginning of the semester you receive three late cards, each of which may be used for one 24-hour extension on any one project deadline or lab deadline. If you submit your project/lab after the deadline, you will automatically use a late card. You do not need to tell your instructor or TAs that you’re using a late card. We will notice based on your submission time and automatically deduct a late card. If your work is not ready by the deadline, submit what is ready to possibly get partial credit.  After late card quota is exhausted, late work will not receive credit.  

Success strategies

Expected Academic Engagement  

Each undergraduate credit hour requires one hour of classroom or direct faculty instruction and a minimum of two hours out of class student work each week of a 15-week semester. For a 4-credit hour course, this means that you should allocate on average 8-12 hours of out-of-class work per week.  This time may vary week to week, depending on the schedule of the course (e.g. weeks where there are exams or projects or other assignments due may require you to put in more time in order to be successful).   STEM courses often require even more study/homework time. Please take this information into consideration when forming your schedule and allow yourself enough time to do the work associated with the course.

Academic Integrity

All students are expected to read and abide by the principles clearly explained in the university’s academic responsibility policy at http://tulane.edu/college/code.cfm.

 

Electronic checkers will be used to detect plagiarism in submitted assignments. You are encouraged to discuss rough ideas and thoughts about a lab assignment with your other classmates, but you have to write up your solution on your own. You are not allowed to read, copy, or rewrite the solutions or code written by others (in this or previous terms, or from the web).  Code produced by others can be used only in special circumstances, when it extends (not replaces) your work beyond the requirements of the assignment. In all such cases, when you need to use a snippet of code or a third-party library, you need to first check with instructor or lead TA if it’s ok to do so, to clearly mark third-party code in your code, to respect copyright, and to provide a working hyperlink to the source.

Incidents of academic dishonesty will be reported to the Associate Dean of Newcomb-Tulane College. If several people are involved in sharing solutions then all parties (e.g. the copier and copiee) will be held equally responsible. In cases of pair programming, each programming team should consist of two people, team submissions from three or more people will be considered plagiarism. Cheating on an exam will result in failing grade for the course.  

In the submitted assignments you are responsible for showing that you have a thorough understanding of what you submit as your own work. This includes through commenting and testing programming assignments. You may be asked to explain in person your thorough understanding of your submission to the instructor before credit is given.

Academic dishonesty is a serious offense. Everyone should watch for and actively oppose all cases of dishonesty.

If you have doubts, check with me. I will be happy to help you be a good citizen of Tulane University.

Participation and professionalism

This class is one of your first professional environments, so we will define and practice high quality behavior. Behaviors that are of low quality, such being unprepared, distracting your colleagues, shirking your own  or group work, or other less desirable behaviors, lay the groundwork for mediocrity. My intent is rather help you lay the groundwork for excellence, and so your professional demeanor is crucial to your success in this class. In other words, you are expected to taking charge of your own learning and behaving as you would in your dream job.

 

Your class participation will be evaluated throughout the semester based on your punctuality, preparedness, and enthusiasm for the course material; put otherwise, your physical and intellectual presence in the classroom.

 

Regular attendance in class and in the lab session is mandatory. In order to succeed in this course, you must make it your priority to come to every class session.

This semester  we will be using Arkaive.com to track attendance.  

You are allowed a maximum of four days of absence during the semester (including regular class meetings and labs). This is similar to sick days at work; you can use days of absence when you’re sick, travel to a conference/sports trip/family function/interview etc.   If your absence is unavoidable in such a case, please let me know about each upcoming absence using Arkaive. When you take one of your four days of absence, your absence is considered excused.

You are expected to stay in the classroom while class is in session, and you may  leave the classroom only in the event of emergency, or when arranged with the instructor/TA. Unfounded leaving of classroom will be treated as unexcused absence.  You are also expected to come to class on time. Repeated tardiness will be counted toward an absence.

More than four absences are considered excessive; each excessive and unexcused absence will cause a 0.25pt deduction from your final course score.  After more than 8 registered unexcused absences, the final grade for this course will be F.

Material of missed lecture is a responsibility of the student. If you missed a class, follow the reading schedule and complete the reading for the missed class; get in touch with your classmates to figure what else you might have missed; resolve questions that you may have about new material with your TAs and instructor asap.

Use of technology Standard meeting courtesy rules apply to class meeting times: cell phone notifications should be switched off; cellphones, tablet and laptop computers should be put away, and no unauthorized technology used should occur during lectures and labs.  The rare instances in which we may need to use laptops, tablets and/or smartphones will be explicitly arranged by the instructor.  By default, use of tablets, phones, laptops and similar devices is not allowed in lectures (even when used for benign purpose such as taking notes and photos, these devices are distracting in a big class such as ours). While in class, you should be 100 % committed to learning the subject.

Pair Programming

The pair programming strategy is widely adopted by software development companies. For the first half of the course you will have to work in pairs to experience this  great way to learn, produce excellent programs and keep up with the schedule.   In general, programs written in pairs are known to have better designs and fewer errors than programs produced by developers working alone.

If you work with a partner, you must work with the same partner for the entire assignment that week (you can switch partners between assignments). You and your partner will each submit their own solution for each problem. If you hand in as pairs, the solutions must be identical, otherwise we will grade them individually. However, both students must submit a “Note” indicating that you worked in a pair, and who your partner was. You should also put the name of your partner in the comments in the code.

If you work with a partner, you must work together in front of one computer for every problem

that you complete together. While you are working, the computer screen should be visible to both people. One person should type, while the other person observes, critiques and plans what to do next. You must switch roles periodically (about every 20-30 minutes). You may think about the problems individually and make minor bug fixes, but your solution overall should be a true joint (collaborative) effort. NOTE: Splitting up the work is not permitted. Both pair members must work on each problem together.

A detailed pair programming guide is available on the course website.

Emergencies and Special Circumstances

Human emergencies

In extreme situations, such as serious illness or family emergency, if you need to reschedule your exam, you should inform both the instructor and the academic advisor prior to the absence if possible, but no later than the first class period after the excused absence, and provide formal documentation justifying your extenuating circumstance in order to schedule your make-up exam within a week after you return. Exams missed without documented excuse won’t receive credit.  There won’t be make-up homework  assignments, labs,  quizzes, exercises, etc. , even in emergency circumstances. If your absence qualifies as emergency, the missed quiz or homework may be dropped from the total computation.  For these assignments in such extreme circumstances, contact the instructor prior to the due date of the assignment to get a consideration.  

Sports, performance, conference, and job interview trips, common cold/flu, other coursework and similar circumstances are not considered an emergency. Please take possibility of such problems into account when you plan your work.

 

Computer emergencies  

Technical problems are part of life and life with computers, and you should assume they will occur. Schedule your time and your work to allow for this sort of problem and still get your work done well and on time. Store your files on external storage such as Tulane Box or Google Drive, to allow to retrieve them should your personal machine become unavailable. Always save intermediate results of your work under different names, just like gamers periodically save the state of their game. This way, even if a small change in your program renders it unusable few minutes before submission deadline, you will always have a good backup.

 

Falling behind

A professional who finds themselves not knowing how to perform a part of  their job wouldn’t just sit and do nothing for a week. Likewise, if you are having a tough semester and discover you have fallen behind, please visit with your professor and TAs sooner rather than later. We will be very happy to work with you and help you catch up.

 

Special accommodations 

If you have a physical, mental or learning disability, either hidden or visible, or another special need which may require classroom, test-taking, or other reasonable modifications, you are invited to share these concerns or requests with the instructor and contact Goldman Center for Student Accessibility.

Grading scheme

Grade distribution

Labs (including Zylabs) 15%

Zybook homeworks 10%

Midterm exam 20%

Final Exam 30%

Quizzes 10%

Programming projects  15% (projects may not be equally weighted)

Grading Scale

 

100 – 93

92 – 90

89  – 87

86 – 83

82 – 80

79 – 77

76 – 73

72 – 70

69 – 60

59 - 0

A

A-

B+

B

B-

C+

C

C-

D

F

                                                 

Grades will be available on Blackboard. In order to receive a passing grade for the course, you must receive a passing grade (60% or above) both in the offline portion and in the exam/quiz portion, and submit the minimum of 80% of all assigned work (the latter implies that even if your work is very late and it doesn’t receive credit, you should submit it to count toward your course “portfolio”). 

 

The lowest lab grade (lowest 4 problems) and the lowest quiz grade will be dropped from the final grade computation.  

You need to complete 90% of zyactivities/warmups correctly to get 100% of the grade for zyactivities/warmups.  

The final calculated grade value will be rounded up.

Discretionary bonus points during final grading will be added for significant Participation and Altruism (e.g., answering your peers’  questions), suggesting new ideas, interesting computing resources, videos, talks, etc.

Regrade requests If your grade is less than 100% of points and you have questions why points were deducted, please see the person who graded your work (or your lab TA if you don’t know who graded it) as soon as possible but no later than one week after the graded assignment or exam was returned.  Timely resolution of all questions will help you avoid making the same mistake in another assignment! Unfortunately, due to the large size of this class, late regrade requests cannot  be considered. Please note that review of the grade will consider the exam/homework as a whole, and as a result your grade is just as likely to go down as it is to go up.

Important disclaimer

Like many subjects in computer science, this class has an ever-evolving structure. It follows a novel pedagogical approach to introductory programming classes (emphasizing problem-solving vs. traditional focus on the programming language) and relies on software that changes with every offering of the course.  I promise the best effort in adhering to the above rules but need for changes in them might arise, and hence I reserve the right to change them if deemed necessary. For instance, slight alterations to the course schedule are possible if the class needs more/less time for a certain topic; additional readings may be assigned during the semester as needed; and so on. Updates will be announced in class and by email, posted on course webpage and on Canvas. Check your Tulane email at least daily.  Current version of this syllabus will be posted on course website.

 

And Finally...

 

·         Review the class material before each class.  Cramming will not work. It is better to study for a short period of time every day than to study for a longer session, once or twice a week. Frequent practice will help you remember the basics better and allow you to create more sophisticated software sooner.

 

·         Don’t be afraid to make guesses and take risks.

 

·         Think of errors as a process of testing hypotheses about the way programming process works, not as what you’re doing “wrong.” NOBODY writes perfect code that works correctly all the time and in every context. Errors are normal, but use corrections that are offered to you as a chance to increase your knowledge of the field.

 

·         Pay attention to the computing news and interesting websites! Share what you find with others in class through Canvas.

 

·         Try to participate in at least one event sponsored by Computer Science Department.    There will be talks and possibly other computing events scheduled throughout the semester.

 

·         During each class, you will be asked to speak to one or several of your neighbors. You may find that it will be much easier to get accustomed to the class material if you study with one of your classmates outside of class as well.

 

•         Please feel free to discuss any aspects of the course with me, after class or during my office hours.

 

 Helpful resources

Tulane University recognizes the inherent dignity of all individuals and promotes respect for all people. As “One Wave,” Tulane is committed to providing an environment free of all forms of discrimination based on race, ethnicity, creed, religion, gender, gender identity and sexual orientation, as well as all forms of sexual harassment, including sexual assault, domestic and dating violence, and stalking. If you (or someone you know) has experienced or experiences discrimination, domestic violence, sexual assault or sexual harassment, know that you are not alone. Resources and support are available.  Learn more at onewave.tulane.edu.  Any and all of your communications on these matters will be treated as either “Strictly Confidential” or “Mostly Confidential” as explained in the chart below.

Strictly Confidential

Mostly Confidential

Except in extreme circumstances, involving imminent danger to one’s self or others, nothing will be shared without your explicit permission.

Conversations are kept as confidential as possible, but information is shared with key staff members so the University can offer resources and accommodations and take action if necessary for safety reasons.

Counseling & Psychological Services (CAPS) | (504) 314-2277

Coordinator of Violence Prevention | (504) 314-2161

                                   

Student Health Center | (504) 865-5255

Tulane University Police (TUPD) | (504) 865-5911

Sexual Aggression Peer Hotline and Education (SAPHE) | (504) 654-9543

Office of Institutional Equity | (504) 862-8083

Be nice to yourself and others in class. Avoid judging yourself and others too harshly. It’s a common problem in tech fields that beginners at times feel  intimidated by the jargon,  amount of technical knowledge and novel tech problems. Know that you have what it takes to study computer science.