Course Syllabus

CSCI 2980:  Special Topics in Computer Science (CS) - Emerging Scholars

Lecture : Mondays from 6:00 p.m. - 8:00 p.m.
Bruinicks Hall 230
Final Exam :   No final exam

Instructors Information:

Maria Gini, Ph.D.
Shepherd Labs 245 (office)
612-625-5582 (office)

Shana Watters, Ph.D.
Shepherd Lab 385 (office)
612-626-9381 (office)

Image result for dilbert program design


  • No textbook is required for this class

Special Instructions:  Bring your laptops to class if you have them.  We will always work on problems on the white board and will often implement them on the computer.  We want you to go through the whole problem solving process so you get lots of practice doing it.

Course Description and Learning Outcomes

Throughout your career as a student focusing on computer science, you will acquire a broad range of skills and knowledge about what puts the "science" into computer science. This class is a complement to the entry-level programming class that you are currently enrolled in and is worth 1 credit.

After completing this course, you will be able to do the following:

  • Computationally think and use approaches commonly used by computer scientists to solve problems by developing your own algorithms within small groups of students.
  • You will develop a way to problem solve by methodically working through a problem from start to finish.  You will take a large problem and decompose it into steps so that you may implement it using a computer programming language.  This course focuses on helping you develop your own way of solving problems that align more naturally with computational thinking and programming.  We practice and then practice some more.
  • Problem solve real world problems and use different fundamental problem solving approaches (e.g. iteration, recursion, exhaustive enumeration.)  Identify key characteristics of problems that indicate possible solution approaches. 
  • Use data expressions, conditionals and loops, data types and structures.
  • Use equality, relational, and boolean operators and expressions.
  • Understand the OOP paradigm and concepts and be able to explain the foundations of OOP.  Write classes and create objects using this paradigm.  Use data representation and abstract data types and fundamental data types and structures (e.g. primitives, lists, dictionaries, data frames, strings.)
  • Understand the concepts and properties of different types of algorithms.

We want you to have confidence in your own problem solving abilities and always be able to fall back on a process to get you "unstuck" when you are working on homework or in a test during your programming class.


There are no tests, homework, or finals in this course and your participation is necessary for you to learn.  You will be allowed to miss 2 meetings without any explanation.  We will take role weekly.  If you miss more than 2 meetings, you will have to have an excused absence with a valid reason for the 3rd miss.  If you miss 4 or more meetings, you will not pass the course with an "S" since the course is is S/N.  S is a pass and N is a no pass.  You can use your 3 misses at any time throughout the course but remember that 3rd miss must be an excused absence.


We look forward to getting to know you and helping you with your success!

Course Summary:

Date Details Due