CSC 1913 Fall 2025

Introduction to Algorithms, Data Structures, and Program Development

Author

Adriana Picoral

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.

Final exam information:

  • Date/time: Saturday 12/13/2025 - 8:00a.m.-10:00a.m.
  • Room: 125 Willey Hall

Course Information

Lecture

Computer Labs

  • Laboratory (002) T 02:30 PM - 04:25 PM Walter Library 106
  • Laboratory (003) T 04:40 PM - 06:35 PM Walter Library 106
  • Laboratory (004) T 02:30 PM - 04:25 PM Lind Hall L102 (Bring your own device)
  • Laboratory (005) T 04:40 PM - 06:35 PM Lind Hall L102 (Bring your own device)
  • Laboratory (012) W 10:10 AM - 12:05 PM Walter Library 106
  • Laboratory (013) W 12:20 PM - 02:15 PM Walter Library 106

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 2pm to 4pm
  • apicoral@umn.edu

Graduate/Head TA

  • Mario Jerez (they/them/theirs)
  • Office hours: 4-5pm on Tuesdays and Thursdays at Shepherd Laboratories room 159

Undergraduate TAs

  • Daniel Budiman
  • Brock Bye
  • Ethan Danner
  • Vennela Dupati
  • Omkar Fulsundar
  • Ebyan Jama
  • Anirudh Krishnakumar
  • Ronan Magnus
  • K’Nhae Pasahahnunwut
  • Huy Vo
  • Mazuki Wu

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 Slack discussion tool. Join our slack using your UMN email address
  • Questions whose answer applies only to you (homework help, specific situations, etc.) should generally be directed to the all staff email: <csci1913f25-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 organized using Slack)
  • 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 slack, and updated in the office hours calendar. Check these places for changes in schedule.

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!

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.

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

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 Part 1
Week 10 Lists Part 2
Week 11 Lists & Tree Based Data Structures
Week 12 Hashing and Hasshing Based Data Structures
Week 13 Stacks and Queues
Week 14 Graphs
Week 15 Misc.

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 8, 2025 Reading 1 Due
Mon, Sep 15, 2025 Reading 2 Due
Mon, Sep 22, 2025 Reading 3 Due
Mon, Sep 29, 2025 Reading 4 Due
Mon, Oct 6, 2025 Reading 5 Due
Mon, Oct 13, 2025 Reading 6 Due
Mon, Oct 20, 2025 Reading 7 Due
Mon, Oct 27, 2025 Reading 8 Due
Mon, Nov 3, 2025 Reading 9 Due
Mon, Nov 10, 2025 Reading 10 Due
Mon, Nov 17, 2025 Reading 11 Due
Mon, Nov 24, 2025 Reading 12 Due
Mon, Dec 8, 2025 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 assignment will be submitted and graded similarly to homework assignments in previous programming classes you may have taken. Labs are always due at 5pm on Monday. While the labs overall might add up to a fair number of points, remember that there will be roughly 12 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
Mon, Sep 15, 2025 Lab 1 Due
Mon, Sep 22, 2025 Lab 2 Due
Mon, Sep 29, 2025 Lab 3 Due
Mon, Oct 6, 2025 Lab 4 Due
Mon, Oct 13, 2025 Lab 5 Due
Mon, Oct 20, 2025 Lab 6 Due
Mon, Oct 27, 2025 Lab 07 Due
Mon, Nov 3, 2025 Lab 08 Due
Mon, Nov 10, 2025 Lab 09 Due
Mon, Nov 17, 2025 Lab 10 Due
Mon, Nov 24, 2025 Lab 11 Due
Mon, Dec 8, 2025 Lab 12 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.) The rules for completing the individual homework follows:

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 15, 2025 Project 1 Assigned
Fri, Oct 10, 2025 Project 1 Due
Mon, Oct 13, 2025 Project 2 Assigned
Fri, Nov 7, 2025 Project 2 Due
Mon, Nov 10, 2025 Project 3 Assigned
Mon, Dec 8, 2025 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.

Exam Dates

Date Exams
Wed, Oct 8, 2025 Midterm 1
Wed, Nov 5, 2025 Midterm 2
Sat, Dec 13, 2025 Final Exam

Other important dates

Access the full university academic calendar for other important dates

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. Likewise, you may find keeping an eye on the class slack in-lecture useful.

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.

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.

College Policies

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. 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.