| Week | Lecture Topics (approx) |
|---|---|
| Week 1 | Welcome and Basic Python |
| Week 2 | More Python |
| Week 3 | Advanced Python |
| Week 4 | Big O notation, and searching |
| Week 5 | Sorting |
| Week 6 | Basic Java |
| Week 7 | Java Objects |
| Week 8 | Inheritance, Polymorhism, and Generics |
| Week 9 | Lists |
| Week 10 | Lists |
| Week 11 | Lists & Tree Based Data Structures |
| Week 12 | Binary Search Tree |
| Week 13 | Binary Search Tree |
| Week 14 | Hashing and Hashing Based Structures |
| Week 15 | Stacks and Queues |
Syllabus
Changes
This syllabus is subject to change. If the syllabus needs to be changed after the 1st day of the semester those changes will be reflected here.
Course Information
Lecture
- MWF 02:30 PM – 03:20 PM (50 minutes) at Smith Hall 331
Computer Labs
All labs are at Walter Library 106
- Laboratory (004) T 02:30 PM - 04:25 PM
- Laboratory (005) T 04:40 PM - 06:35 PM
- Laboratory (006) W 08:00 AM - 09:55 AM
- Laboratory (007) W 10:10 AM - 12:05 PM
Course staff
Instructor
- Adriana Picoral (PhD, she/her)
- Department of Computer Science
- Office: 300A Lind Hall
- office hours (drop in):
- Monday 12pm to 2pm
- Tuesday 1pm to 3pm
- office hours (drop in):
- apicoral@umn.edu
Come to student drop-in hours if you have questions, want to discuss the material, or feel free to tell me more about yourself and your interests and activities outside of class.
Contacting me by email: At some points in the term, my inbox gets quite full, but I do want to hear from you. If you email me and don’t hear back from me within two business days, please send a follow up email. I will appreciate the gentle reminder.
Teaching Assistants
I care about the success of each student, even if I cannot meet with all of you individually due to the size of this class. When you have questions about the course material, questions about the subject more broadly, concerns to discuss, accommodations you need, or thoughts you want to share, please start by going to office hours. Me and my staff care about students’ success and we all have expertise to share.
TAs can review the course material, exams and assignments with you, and suggest study strategies. They can also give you tips about the resources that the campus offers, and can provide insights into how to succeed in college more broadly.
Graduate TA:
- Ville Cantory
Undergraduate TAs:
- Colin Abe
- Daniel Budiman
- Ethan Danner
- Omkar Fulsundar
- Connor Justin
- Huy Vo
Contacting Course Staff
The best way to contact course staff depends on your question:
- General knowledge Questions (applies to students other than you, and has no private data) should be directed to our discussion tool. Join our discussion using your UMN email address)
The discussion tool be our primary form of communication for asking questions pertaining to course content. The reason for this policy is because if one student has a question about course materials or assignment, that question is usually shared by their peers. The chat feature archives all communication and allows everyone in the course to benefit from each others’ questions. The TAs and myself will be checking the chat several times throughout the week to respond to questions. If you see a question in the chat that has not been answered yet, and you know the answer, please share that knowledge with your classmates. Be mindful that chat messages are not private, and will be viewable to everyone in the course. If you need to discuss something with myself or your TA one-on-one, please reach out by email.
- Questions whose answer applies only to you (homework help, specific situations, etc.) should generally be directed to the all staff email: <csci1913fa26-staff@umn.edu>
- Questions pertaining to specific special accommodations that you wish to discuss with Instructor Picoral directly can be directed to her at her official U of M email address: <apicoral@umn.edu>
Office Hours
We are offering 3 different types of office hours this semester.
- Online Office Hours (time-limited 1-on-1 zoom meetings on zoom)
- In person Office Hours (ad-hoc in-person meeting time with a course staff scheduled in advance with some reserved space)
- By Appointment (pre-scheduled appointments with (usually) the professor. Useful for longer conversations or maximum privacy. Rules for all of these can be found in the course rules document. you will be expected to know these rules Some important top-level rules:
- General Rules:
- You can attend anyone’s office hour – it doesn’t have to be one of your specific lab TAs.
- Check the office hours calendar in advance – office hours might shift over time, be moved online, or otherwise change in response to staff availability and health. Changes will typically be announced on Canvas, and updated in the office hours calendar. Check these places for changes in schedule.
- General Rules:
Materials, Software, Accounts, and Textbook
- zyBook (an interactive textbook). We are using inclusive access () this semester, which means that you should be automatically charged for the textbook as an additional fee through the U of M, and should receive instructions on how to access it some time during the week before the semester starts. Payment for this should go through the U of M CourseWorks program.
- Visual Studio Code (or your prefered IDE)
- Some version of Python 3 (not Python 2). Follow Installation instructions. When grading, the version of Python 3 installed on CSE lab machines will be the version used for grading.
Course Description and Learning Outcomes
This course is an object-oriented programming course. While we will cover many topics, a key focus of this course will be the implementation of abstract data types (stacks, queues, linked lists, hash tables, and binary tree structures) using the Java programming language. Additional topics will include: basic search and sorting algorithms, the principles of algorithm analysis, and programming in the Python programming language.
We will cover this course in three core modules:
- Python and the formal study of algorithms. We will review the syntax and ideas of the python programming language. Then we will learn fundamental concepts of the formal study of algorithms (asymptotic complexity analysis, searching and sorting algorithms as an example)
- Java and the study of Useful objects. We will review the syntax and ideas of the java programming language, the motivations and ideas of object oriented programming languages (abstraction and encapsulation), and then review standard object oriented ideas (inheritance, interfaces, abstract classes, generics, and polymorphism) that are vital to creating useful objects in large-scale projects.
- Design and Implementation of data structures. In this module we will review the idea of a data structure (useful classes that contain algorithms for organizing arbitrary data). We will study the fundamental data types: stack, queue, list, set, and map. We will implement these with arrays, linked lists, Hash Tables and binary trees.
This material will be supported by substantial weekly lab assignments, allowing focused practice and skill building, along with three substantial projects that give practice synthesizing these topics and building larger scale programming solutions.
Upon successfully completing this class, students should be familiar with both the python and java programming languages. a student should be able to use and create standard data types to solve a variety of problems, and implement their solution in an object-oriented way.
Specifically, students should be able to:
- Read and understand small programs written in Python or Java
- Write small programs in Python or Java
- Given a computational problem, develop a functioning object oriented program in Java, and document its functionality in terms of the given problem.
- Analyze simple algorithms and derive asymptotic time complexity functions using big-O notation.
- Identify which abstract data type and/or algorithm could be useful in representing or solving a given problem, and why.
- Modify or specialize abstract data types to adapt them to problems that are not amenable to straightforward use of the abstract data types.
- Compare alternative implementations of data structures with respect to performance.
CSci 1913 is a 4 credit course, with 3 hours/week of lecture, and a 2 hour/week lab. You should expect substantial out-of-class programming work. The only way to improve your programming skill is to do a lot of it!
Keep in mind that it is normal to be challenged by this course material, and that this is not a sign that you are not capable of learning or does not belong in the course. You should organize your schedule so you are working on problems and projects every day (instead of trying to cram a lot of work in a short period of time).
Modality
This course is scheduled as an in-person course. You are expected to attend every lecture Non-attendance will be viewed as an issue and will likely effect your grade, and learning.
Are You Academically Prepared? (Prerequisites)
CSCI 1913 has a relatively complicated list of prerequisites. The basic summary, however, is that this course assumes you have a background in basic computer science concepts including programming and problem-solving skills. This course will build upon these concepts and techniques. While it seeks to give you introduction in programming in both Python and Java, this introduction will be VERY FAST, under the assumption that you already know and understand the basic control flow operations of programming, and instead only need to know how these ideas translate into the new languages. : Formally: (EE major and EE 1301) or (CmpE major and EE 1301) or CSCI 1103 or CSCI 1113 : Note If you took CSCI 1133 you are expected to take CSCI 1933. Taking CSCI 1913 might sound like a fine replacement for 1933 on-paper, but experience has shown that learning Java with only Python as prior experience takes more time than we give you in this course – therefore if you’ve taken CSCI 1133, you should seek enrollment in CSCI 1933 not CSCI 1913.
If you have not mastered basic computer science concepts including programming and problem-solving skills you should visit me or a TA and we will provide resources that can help you learn and review these concepts, which should prepare you for this course.
Staying On Top of Things (Attendance and Communication Policies)
This course has broad, disparate content with some weeks having multiple assignments. To do well, it will require good organizational skills and attention to detail. Remember that educating yourself is not a passive process and not an easy endeavor, but it is worth the struggle. It will be made easier, however if you COME TO CLASS, CHECK THE CANVAS SITE OFTEN, SEEK ASSISTANCE WHEN NEEDED, and DO YOUR HOMEWORK. The Canvas course site will have all the most recent due dates for assignments, labs, readings, and quizzes. If you are struggling with content or programming, please communicate with teaching staff. Office hours are for you, and you don’t have to have a well-formed question when you arrive. We want to help you to be successful.
Communication: We will use Canvas to communicate with you. Please check Canvas daily. Also, we will use your University of Minnesota email address to communicate with you. Please check your official email often. If you send me an email from a non-university of Minnesota email address I will not responded. In addition to email you can send me a canvas message.
Grades
Your final grade is based on the following categories and weights.
| Assignment | Points |
|---|---|
| Zybook Exercises | 5 |
| Labs | 15 |
| Projects | 20 |
| Quizzes | 20 |
| Midterm 1 | 10 |
| Midterm 2 | 14 |
| Final Exam | 16 |
| Total points | 100 |
The grading in this course is on an absolute scale. This means that the performance of others in the class will not affect your grade. Your percentage will earn you the following grade:
| Letter Grade | Points |
|---|---|
| A | 93 - 100 |
| A- | 90 - 92.99 |
| B+ | 87 - 89.99 |
| B | 83 - 86.99 |
| B- | 80 - 82.99 |
| C+ | 77 - 79.99 |
| C | 73 - 76.99 |
| C- | 70 - 72.99 |
| D+ | 67 - 69.99 |
| D | 60 - 66.99 |
| F | < 60 |
Your grade will not be rounded up to the nearest whole number. If you receive a 92.99%, you will receive an A- and not an A. Do not ask for your grade to be rounded up at the end of the course. It will not happen. For S/N grading, a satisfactory grade (S) requires a weighted score of 70 or above.
Schedule
The tentative Schedule of the class material can be found in this google doc (You must be logged into a University of Minnesta account to view then document). This is a tentative schedule and likely to change.
Topics per week
Reading
Your first introduction to course material will be the assigned readings. Readings will normally be about a week to a day ahead of lecture (depending on when you do the readings) and will generally be due on Monday before class. As noted above readings will be done through the online zybook textbook and are both required and graded.
| Date | Readings |
|---|---|
| Mon, Sep 14, 2026 | Reading 1 Due |
| Mon, Sep 21, 2026 | Reading 2 Due |
| Mon, Sep 28, 2026 | Reading 3 Due |
| Mon, Oct 5, 2026 | Reading 4 Due |
| Mon, Oct 12, 2026 | Reading 5 Due |
| Mon, Oct 19, 2026 | Reading 6 Due |
| Mon, Oct 26, 2026 | Reading 7 Due |
| Mon, Nov 2, 2026 | Reading 8 Due |
| Mon, Nov 9, 2026 | Reading 9 Due |
| Mon, Nov 16, 2026 | Reading 10 Due |
| Mon, Nov 23, 2026 | Reading 11 Due |
| Mon, Dec 7, 2026 | Reading 12 Due |
| Mon, Dec 14, 2026 | Reading 13 Due |
Computer Lab
There will be a two-hour computing lab every week (starting at week 2). In these students will work with a lab partner to begin a practical programming problem. These lab assignments will be submitted and graded similarly to homework assignments in previous programming classes you may have taken. Labs are always due at 11:59pm on Wednesday. While the labs overall might add up to a fair number of points, remember that there will be roughly 11 labs – with any one lab with very few points in the end. Therefore you should not let a desire for “perfection” get in the way of exploring the lecture material and viewing labs as low-stakes learning opportunities.
- Lab submissions will be primarily evaluated automatically to validate expected behavior.
- Any lab may be subject to manual review, and some labs may explicitly have manually graded components.
- Attendance of the lab section itself is expected unless you have an excused absence. Historically, students who skip labs, fail labs (and we don’t want this for you).
| Date | Labs |
|---|---|
| Wed, Sep 16, 2026 | Lab 1 Due |
| Wed, Sep 23, 2026 | Lab 2 Due |
| Wed, Sep 30, 2026 | Lab 3 Due |
| Wed, Oct 7, 2026 | Lab 4 Due |
| Wed, Oct 21, 2026 | Lab 5 Due |
| Wed, Oct 28, 2026 | Lab 06 Due |
| Wed, Nov 4, 2026 | Lab 07 Due |
| Wed, Nov 18, 2026 | Lab 08 Due |
| Wed, Dec 2, 2026 | Lab 09 Due |
| Thu, Dec 10, 2026 | Lab 10 Due |
| Wed, Dec 16, 2026 | Lab 11 Due |
Projects
There will be three independent/individual programming projects one for each module of the course. You will have roughly three weeks to do each project. The first project will be in python, the second and third will be in Java. Projects must be done individually, although you may discuss them with others in a general way (I.E. you can discuss the problem but not the solution). These projects will allow you a chance to incorporate new programming techniques we’re discussing into a bigger, broader program. These will often challenge all of your programming skills, including ones we might not have explicitly trained in this course, as they are designed to help you experience the blend of challenges seen in more realistic large-scale programming problems.
Projects will always feature substantial manual review. Make sure you write your code first, and foremost, to be human readable. On a project, it will not be enough for the code to “work” – we cannot read and understand the code, you will lose points.
Project assignments are not collaborative efforts, and you must complete each without the assistance of anyone else other than your instructor or TAs (unless the problem description explicitly says you may work in a pair or group.)
Project assignments will be posted on Canvas, so make sure you check Canvas regularly. Due dates and times will be stated clearly and late work will result in penalties.
Unless otherwise mentioned, project assignments are to be done individually. You are welcome to discuss what the problems mean, general problem solving strategies, etc., but are not allowed to share solutions in any way. This means you cannot copy others’ work, supply answers in part or whole to others, or make substantial enough use of others’ work that (even if you do not copy verbatim) the answer you submit is not your own work. Do not “research” the problem and try to find solutions on the Internet. This is cheating and if caught, you will be turned into the college. We do run similarity checkers and they are very, very good at catching students who cheat. We regularly look at websites such as Chegg, CourseHero, etc and ensure that students are not posting questions and asking for solutions.
| Date | Projects |
|---|---|
| Mon, Sep 21, 2026 | Project 1 Assigned |
| Fri, Oct 16, 2026 | Project 1 Due |
| Mon, Oct 19, 2026 | Project 2 Assigned |
| Fri, Nov 13, 2026 | Project 2 Due |
| Mon, Nov 16, 2026 | Project 3 Assigned |
| Mon, Dec 14, 2026 | Project 3 Due |
Quizzes
There will be weekly in-class on-paper quizzes. These will primarily test your understanding of what we’re studying, and will be very similar to the reading and lab exercises. These will be closed notes, but very short and simple. Quizzes will be generally held during class on Wednesday (if you need accommodations, talk to me). These quizzes are meant to help you prepare for the exams.
If you do all of your homework and understand the material, there is no reason for you not to do well on the quizzes. I assign these quizzes for two reasons. One reason is to show me how well students are understanding the material, whether there are some students who are not there yet, and whether I need to review certain concepts with the class. The other reason is to let you assess how well you are understanding the concepts and where you need to focus more of your efforts to learn the course material. If you are struggling on the quizzes, it means that you need to seek help from me, one of the TAs, the Department resources listed below, or your peers, so that we can help you learn the material.
Exam Dates
| Date | Exams |
|---|---|
| Wed, Oct 14, 2026 | Midterm 1 |
| Wed, Nov 11, 2026 | Midterm 2 |
Other important dates
Access the full university academic calendar for other important dates
Course Policies
Attendance
While there are problems and challenges we will be working and submitting to gradescope in class, I do not take attendance. You are adults and I expect you to be motivated to grow your knowledge and abilities by engaging in assignments and course lectures. I recommend that all students attend lectures if possible, because I believe attending lectures is the best way to learn the concepts and improve your computing skills. If you must miss a lecture, it is your responsibility to access the lecture materials on canvas.
Grading policy
I provide multiple opportunities for students to receive feedback on their performance throughout the course to give students opportunities to see how they are doing and so that they can identify places they need to apply more effort or new strategies along the way, seek help if they are struggling and improve throughout the semester. My hope is that all students will develop the knowledge they need to do well in this course and that all students–even those who perform well early in the semester—will improve and develop greater knowledge and skills through practice on the quizzes and exams. Students earn the grades they receive; I do not curve grades or add extra points or extra credit in this course because I do not believe students grades should be tied to other students’ grades (on a curve) and because there are plenty of opportunities for students to improve their grades throughout the semester with the labs, projects, quizzes and exams.
Preferred Names
If your preferred name is not the same as the name that appears on the university provided roster for the course, please let me know so that I can use your preferred name.
A respectful learning environment for all
Everyone living, learning, and working at this college is expected to contribute to creating a respectful environment free from harassment and discrimination.
If you are experiencing school-life conflicts or unforeseen difficulties that impact your ability to meet a deadline, please contact me immediately. We want to work together to form a plan for your academic success.
Caregiver Responsibilities Policy
I have great respect for students who are balancing their pursuit of education with the responsibilities of caring for children or other family members. If you run into challenges that require you to miss a class, or if your caregiving responsibilities are interfering with your ability to engage in remote learning, please contact me. There may be some instances of flexibility we can offer to support your learning.
Use of electronic technology in class
For CSCI 1913, it is not only allowed, but recommended to use personal electronic devices such as a laptop in-lecture. You may find it useful to bring a personal device able to do programming to class so you can “program along” with in-class examples.
If you choose to bring personal electronic devices into lecture, please use them responsibility. If you are disrupting other students’ ability to learn I will ask you mute or put away your electronic device.
Scholastic Conduct (specific to this course)
The amount of collaboration allowed on assignments will be explained in the assignment rules document, and often summarized on each assignment. In general, you are free to discuss the assignment itself with other student, but you must create and program own solutions. This means that you should not discuss even your general approaches to solving assignments with other students (developing these approaches is often the exact purpose of the assignment). Naturally, coping others’ answers (either in-part or as a whole), letting another person see or copy your answers, or using online resources not expressly permitted in the course are also not allowed. These are serious breaches of conduct that can result in failing the course, and additional college level consequences. Additional explanation of academic conduct is in the academic conduct file that is posted to the class website. If you have any questions about what is and is not allowable in this class, please ask the course instructor in advance. This is not an “act first ask questions later” type of issue, the consequences for unintentional breaches of this policy are the same as the consequences for knowing breaches.
You are capable of meeting my expectations for this course. If you are concerned about how well you are doing in this course, please come speak with me instead of considering academic misconduct.
The specific consequences of cheating will be determined on a case-by-case basis by the professor. As a general guideline all related assignments will be given a score of 0, which cannot be dropped (you will retain your drops, you just won’t get to drop this assignment). Secondly, one letter grade will be dropped from your final grade (if a grade of A- a grade of B- will be entered). The consequence for repeated incidents will be more severe, including failing the course.
All incidents will be reported to the office of community standards which may lead to further university-level consequences outside of scope of our course. This is not subject to debate or compromise. It is recommended you review the Office of community standards documentation to better understand the consequences available at the university level.
On LLMs
The Board of Regents Student Conduct Code states the following in Section IV, Subd.1: Scholastic Dishonesty:
“Scholastic dishonesty means plagiarism; cheating on assignments or examinations, including the unauthorized use of online learning support and testing platforms; engaging in unauthorized collaboration on academic work, including the posting of student-generated coursework on online learning support and testing platforms not approved for the specific course in question; taking, acquiring, or using course materials without faculty permission, including the posting of faculty-provided course materials on online learning and testing platforms; …”
Artificial intelligence (AI) language models, such as ChatGPT, and online assignment help tools, such as Chegg®, are examples of online learning support platforms: they can not be used for course assignments except as explicitly authorized by the instructor. The following actions are prohibited in this course:
- Submitting all or any part of an assignment statement to an online learning support platform;
- Incorporating any part of an AI generated response in an assignment;
- Using AI to brainstorm, formulate arguments, or template ideas for assignments;
- Using AI to summarize or contextualize source materials;
- Using AI to debug your code
- Submitting your own work for this class to an online learning support platform for iteration or improvement.
If you are in doubt as to whether you are using an online learning support platform appropriately in this course, I encourage you to discuss your situation with me.
Any assignment content composed by any resource other than you, regardless of whether that resource is human or digital, must be attributed to the source through proper citation. (typically this would be a comment in your code.)
Unattributed use of online learning support platforms and unauthorized sharing of instructional property are forms of scholastic dishonesty and will be treated as such.
Student Support
UMN provides extensive academic supports for students, and these supports are there to let students achieve the academic success they are truly capable of.
Disability Accommodations
I am committed to creating an inclusive learning environment within my course. Inclusivity and accessibility are ongoing community processes, and I hope that you as a member of our class share my commitment to creating a classroom experience that fosters belonging.
Please contact me immediately if you become concerned—for any reason—about your capacity to fully participate in our course due to the structure of the course, activities, or assignments. If you work with the Disability Resource Center (DRC), please notify me as soon as possible so that we can discuss access (see contact information below). If you do not work with the DRC, but know that access barriers may arise (due to undiagnosed health conditions, mental health, learning style, life circumstances, etc.), please reach out to me as soon as possible so that we can work together to support your learning. I welcome the conversation.
Students Mental Health and Stress Management
As a student you may experience a range of issues that can cause barriers to learning, such as strained relationships, increased anxiety, alcohol/drug problems, feeling down, difficulty concentrating and/or lack of motivation. These mental health concerns or stressful events may lead to diminished academic performance and may reduce your ability to participate in daily activities. University services are available to assist you. All of us need a support system, and many students benefit from the use of counseling services. You can learn more about the broad range of confidential mental health services available on campus via the Student Mental Health Website. As an instructor/University community member, we care about the wellbeing of students. If health, safety, or mental health concerns are conveyed, we may consult with campus support offices to provide support and resources to a student.
Mental Health is Physical Health. I am committed to treating mental health issues, short-term or long-term, with the same severity I would treat physical health issues, especially as it would relate to accommodations and make-up work.