Course Syllabus

CSE 30 – Summer 2020 – Session 1

General Information

1. Prerequisites

It is expected that you have taken CSE 12/15L or another equivalent course in data structures. CSE 30 assumes that you have Java programming skills, and some exposure to Linux programming environment. We will use C language in this class though you are not required to have used C before.

2. Critical information, at a glance

You should read this entire syllabus.  It is important.  It may be the most important thing you read for this course. But here are the pieces of information you absolutely do not want to forget.  I don't mean for this to sound scary, but so many students fail to read or understand these points, so I want to make them as clear as possible.

·         Homework (PAs) is due by 11:59 pm on the due date. No late work will be accepted unless it is due to a documented emergency and the instructor of the course has to approve it before the due time. 

·         All reading assignments are due before the class for each session. We won't assign any points to grading.

·         It is your responsibility to ensure that you have correctly submitted the correct code for your homework assignment.  Incorrectly submitted assignments will be graded as is. We won't accept late work.

·         All homework assignments must be done based on the instructions.

·         All questions for the class should be posted to Piazza.  Emails to the instructor should be about personal and confidential matters only.

·         We offer each student two slip days that will allow you to be late for up to 24 hours after the due date of an assignment. Feel free to use them for emergency purposes or for sparing the load from different classes.

3. What will I learn in this class?

·         Write, Test, and Debug C and Assembly programs of medium complexity.

·         Author C programs and functions with effective use of pointers, including at least the handling of pointers to pointers.

·         Translate C functions, including recursive functions, functions using Strings, functions using user-defined types: structs,  functions with parameters, and functions with pointers to Assembly and vice-versa.

·         Analyze the memory layout of C and assembly programs including fully articulating the state of the stack and heap across function calls and after using malloc and free.

·         Convert numbers between common computer science bases (binary, octal, decimal, and hex), convert to and from floating-point, and effectively employ bitwise operators in C and assembly.

·         Effectively use debugging tools (gdb) and articulate the impact of basic compiler flags.

4. Textbook: freely available from UCSD library.

·         "Digital Design and Computer Architecture: ARM Edition" by Sarah Harris and David Harris. This book should be accessible through UCSD's ebook library at http://roger.ucsd.edu/record=b9288773~S9 (Links to an external site.)

·         Recommended book: "ARM Assembly Language : Fundamentals and Techniques, Second Edition" by William Hohl and Christopher Hinds. This book can be accessed (at most three people a time) through UCSD's ebook library at http://roger.ucsd.edu/record=b9498630~S9

Grading Policy

Your final grade will be determined via the following percentages:

·         Midterm (25%)

·         PA: 40% (PA1 - 15%, PA2 - 10%, PA3 - 15%)

·         Final exam: 35%

We will use a standard scale for assigning letter grades: 

·         A>=90

·         B: 80-89.99999

·         C: 70-79.99999

·         D: 60-69.99999

·         F:<60

The instructor has the discretion to assign + or - for a given letter grade, though in general we will stick with the normal scales for + 0r -. 

Important Grading Policies:

·         You must score at least 55% on the overall PA portion of this course. If you score lower than 55% on the PAs overall, you will receive an F for the course, regardless of your overall average.

·         Each student has two slip days and each slip day can give you up to 24 hours to turn in an assignment after the deadline. You can only use one slip for each assignment.

·         You have 3 days from the time a PA or midterm is returned to request a regrade. After that, the grade is set in stone. To request a regrade, please contact the person who graded the assignment/quiz originally. You should submit your regrade request through gradescope.com (Links to an external site.). Submit the regrade request on the corresponding problem and clearly explain why you think there is a grading error. If you submitted a regrade request without clear justification and was simply abusing the regrade system, your grade will be lowered as a penalty.

·         The last PA and the final exam have a regrade period of 1 day after the work is released to you. It will ensure that we submit everyone's final letter grade timely. No regrade requests can be made after the regrade period has ended. 

Staff and Course Information

1. Course Staff

Instructor: Paul Cao (A00)

Contact: yic242@eng.ucsd.edu [Home Page]

Online zoom link: Show on canvas

Online office hours: Show on canvas

Instructor: Keith Muller (B00)

Contact: hallos@ucsd.edu

Lecture zoom link: Show on canvas

Online office hours:  Show on canvas

Please only email instructors with personal (confidential) questions. If you need to see us at a time other than the office hours, you should email us in advance to set up a time.  You should look at their calendar and propose a few time slots of 30 minutes or less. 

Tutors

We have many tutors for this class who are available to help you online. If you need tutor help, just submit your ticket on autograder.ucsd.edu.   All tutoring sessions are online via zoom. 

2. Course Components

Class Sessions (a.k.a. Lectures)

These are instructor lead sessions that will focus on explanations of complicated and important concepts, and explore strategies on manipulating basic data structures. Instructors will use in-class polls as well as pre-released worksheets to work out different problems with students. These sessions will be recorded and will be available online. It is strongly encouraged that everyone attends lecture sessions for more effective learning. We understand that sometimes it isn't possible under the current situation affected by Covid-19. For those who can't attend lectures real-time, you should watch the recorded video.

Reading Assignments 

To prepare you for these interactive class sections, there will be reading assignments to be completed before each class section.  This reading and the videos are required, and you should complete the videos and reading assignments. We don't grade your reading assignment during summer because of its tight turnaround time.

Midterm

We will have one midterm which will be held asynchronously. We will provide more details as we approach the midterm time. 

Problem Solving Assignments (PAs)

Most weeks there will be a programming assignment due. These will consist of reading a problem statement formulating a plan to solve the problem (an algorithm) implementing a solution (writing programs in C/assembly that solve the problem). The Java code that implements the solution will always be submitted for grading by following the submission instructions BEFORE the deadline. You should complete all the PAs by yourself unless stated otherwise in the instructions.

Discussion Sections

Discussion sections are optional. Discussion sections start Week 1. Discussion sections in 30 focus on basic concepts and offer help on the PAs. They are extremely helpful for you. You should try to attend the discussion session you registered in. The discussion sessions are not the same for Mondays and Wednesdays. But we will record both sessions for your reference.

Academic Integrity

Complete your academic honor pledge in this link (Links to an external site.) before the end of Week 1!

The basic rule for CSE30 is: Work hard. Make use of the expertise of the CSE 30 staff to learn what you need to know to really do well in the course. Don't cheat.

If you do cheat, we will enforce the UCSD Policy on Integrity of Scholarship (see the General Catalog or the corresponding web page, scroll 2/3 of the way down). This means: You will get an F in the course, and the Dean of your college will put you on probation or suspend you or dismiss you from UCSD.

What counts as cheating?

In CSE 30, you can read books, surf the web, talk to your friends and the CSE 30 staff to get help understanding the concepts you need to know to solve your PA problems. However, you must write your program alone for all PAs.

The goal of CSE 30 will be a turning point for most of you on your programming skills. Future instructors, employers, and colleagues will expect that you will attain a certain proficiency in problem solving and programming. Using unauthorized aids in doing your work will prevent you from attaining the proficiency that others will expect. Meeting or not meeting these expectations relate directly to getting internships, retaining employment, and success in your future studies.

In CSE 30, using or even looking at program code or the write up of algorithms that someone else has written (unless it was explicitly provided as part of the assignment), or providing program code or detailed algorithms to someone else, or turning in code that you have written with someone else other than your partner, is considered cheating. Yes, we do electronically check every program that is turned in.

Receiving a grade on a PA doesn't mean that you have passed the plagiarism checking. We can report cheating cases any time during the quarter, even after we submit your final letter grade. So the safest bet is don't cheat!

How can I be sure that my actions are NOT considered cheating?

To ensure you don't have a problem with this, here are some suggestions:

o    Don't even look at or discuss another student's code or detailed algorithms for a PA you are working on, and don't let another student look at your code or show him/her your algorithms.

o    If you are talking to another student about the assignment, don't take notes, and wait an hour afterward before you write any code.

o    Don't start with someone else's code and make changes to it, or in any way share code with other students.

Also, in CSE 30, you must write your own answers on the closed-book exams. Getting answers from someone else, or providing answers to someone else, is cheating. Everyone needs to stop writing on the exam/quiz once the exam/quiz period has ended. Failing to follow this policy will result in a zero for you on that exam/quiz.

To reinforce these points, every student in CSE 30 must read, understand, and electronically sign the Integrity of Scholarship Agreement. You must sign an integrity statement before completing any of the assignments or labs. Everyone is expected to complete the academic integrity tutorial at http://libraries.ucsd.edu/assets/elearning/cse/cseplagiarismlink/story.html (Links to an external site.)

To detect instances of academic integrity violations in programming assignments we will use 3rd party software. We recommend you only include your class lab account ID (not your name or PID) in your submissions. Including your name and/or PID will disclose that information to the 3rd party.

 (Links to an external site.)

Getting Help

We expect that ALL STUDENTS WILL NEED HELP at some point in this course. If you find yourself needing help, this is not a cause for embarrassment. It is completely expected. Please seek help early and often through any (or all) of the following resources.

Open lab hours:

There are many, many hours in which tutors are willing and available to help you with any questions you might have. CSE 30 open tutor hours are shown in the tutor hour calendar.

Online help - Piazza:

Use the Piazza site for any questions related to the PA, material in the course, quizzes, exams, or course logistics. Piazza allows you to post questions anonymously (to other students) if you don’t feel comfortable revealing your name. In general, all questions should be addressed to Piazza EXCEPT:

·         Confidential questions that you wish to address to your instructor only. Please email your instructor directly.

·         Questions about your grade. Please contact the person who graded your assignment directly.

·         Posts that include portions of your PA solution. Please see a tutor in our lab, or post these questions privately.

Office hours:

Your instructor and TAs are always willing to help you during her or his office hours. If you cannot make it to your instructor’s or TA's office hours but wish to meet with your instructor or TA, please send her or him email to set up an appointment.

Other Important Policies

1. Diversity and Inclusion

We are committed to fostering a learning environment for this course that supports a diversity of thoughts, perspectives and experiences, and respects your identities (including race, ethnicity, heritage, gender, sex, class, sexuality, religion, ability, age, educational background, etc.).  Our goal is to create a diverse and inclusive learning environment where all students feel comfortable and can thrive. 

Our instructional staff will make a concerted effort to be welcoming and inclusive to the wide diversity of students in this course.  If there is a way we can make you feel more included please let one of the course staff know, either in person, via email/discussion board, or even in a note under the door.  Our learning about diverse perspectives and identities is an ongoing process, and we welcome your perspectives and input. 

We also expect that you, as a student in this course, will honor and respect your classmates, abiding by the UCSD Principles of Community (https://ucsd.edu/about/principles.htmlLinks to an external site.).  Please understand that others’ backgrounds, perspectives and experiences may be different than your own, and help us to build an environment where everyone is respected and feels comfortable.

If you experience any sort of harassment or discrimination, please contact the instructor as soon as possible.   If you prefer to speak with someone outside of the course, please contact the Office of Prevention of Harassment and Discrimination: https://ophd.ucsd.edu/Links to an external site..  

2. Students with Disabilities

We aim to create an environment in which all students can succeed in this course.  If you have a disability, please contact the Office for Students with Disability (OSD), which is located in University Center 202 behind Center Hall, to discuss appropriate accommodations right away.  We will work to provide you with the accommodations you need, but you must first provide a current Authorization for Accommodation (AFA) letter issued by the OSD. You are required to present their AFA letters to Faculty (please make arrangements to contact me privately) and to the OSD Liaison in the department in advance so that accommodations may be arranged.

3. Basic Needs/Food Insecurities

If you are experiencing any basic needs insecurities (food, housing, financial resources), there are resources available on campus to help, including The Hub and the Triton Food Pantry.  Please visit http://thehub.ucsd.edu/Links to an external site. for more information.

 

4. Research Consent

We might conduct research studies in this class that includes the analysis of student grades and/or reformat of course structure to learn how we can teach computer science better. Refer to the consent form here and here