Home Madelaine Struwe Classes Major School Projects Contact

Computer Science Classes

My Computer Science Classes


I have taken the computer science classes listed below from CU Boulder. While in these classes I have picked up the following programming languages in a Linux environment: Python, C++, and C. I am working to learn other languages to expand my toolbelt.

I have taken the course descriptions from CU Boulder's Course Catalogue

Starting Computing

Teaches techniques for writing computer programs in higher level programming languages to solve problems of interest in a range of application domains. Intended for students with little to no experience in computing or programming.

Data Structures

Studies data abstractions (e.g., stacks, queues, lists, trees) and their representation techniques (e.g., linking, arrays). Introduces concepts used in algorithm design and analysis including criteria for selecting data structures to fit their applications.

Discrete Mathematics

Introduces the ideas of rigor and proof through an examination of basic set theory, existential and universal quantifiers, elementary counting, discrete probability, and additional topics.

Linear Algebra

Examines basic properties of systems of linear equations, vector spaces, inner products, linear independence, dimension, linear transformations, matrices, determinants, eigenvalues, eigenvectors and diagonalization.

Human Centered Computing

Introduces the practice and research of human-computer interaction, including its history, theories, the techniques of user-centered design, and the development of interactive technologies. The course will cover computing in society at large with respect to domains such as health, education, assistive technology, ethics, environment, and more.

To learn about the course project, click here.

Computer Systems

Covers how programs are represented and executed by modern computers, including low-level machine representations of programs and data, an understanding of how computer components and the memory hierarchy influence performance.

Algorithms

Covers the fundamentals of algorithms and various algorithmic strategies, including time and space complexity, sorting algorithms, recurrence relations, divide and conquer algorithms, greedy algorithms, dynamic programming, linear programming, graph algorithms, problems in P and NP, and approximation algorithms.

Intro to Robotics

Introduces students to fundamental concepts in autonomous, mobile robotics: mechanisms, locomotion, kinematics, control, perception and planning. The course consists of lectures and lab sessions that are geared toward developing a complete navigation stack on a miniature mobile robotic platform.

To learn about the course project, click here.

Software Development Methods and Tools

Covers tools and practices for software development with a strong focus on best practices used in industry and professional development, such as agile methodologies, pair-programming and test-driven design. Students develop web services and applications while learning these methods and tools.

To learn about the course project, click here.

Principals of Programming Languages

Study fundamental concepts on which programming of languages are based, and execution models supporting them. Topics include values, variables, bindings, type systems, control structures, exceptions, concurrency, and modularity. Learn how to select a language and to adapt to a new language.

Data Systems

Analyzes design of data systems, including data stored in file systems, database management systems and physical data organizations. Studies calculus of data models, query languages, concurrency and data privacy and security.

Data Mining

Introduces basic data mining concepts and techniques for discovering interesting patterns hidden in large-scale data sets, focusing on issues relating to effectiveness and efficiency. Topics covered include data preprocessing, data warehouse, association, classification, clustering, and mining specific data types such as time-series, social networks, multimedia, and Web data.

To learn about the course project, click here.

Computer Animations

Develops a firm understanding of the general principles of computer animation. Lectures cover the creation of models, materials, textures, surfaces, and lighting. Path and key frame animation, particle dynamics, and rendering are introduced. Students are assigned a number of animation tutorials to carry out.

To learn about the course project, click here.

Computer Graphics

Studies design, analysis and implementation of computer graphics techniques. Topics include interactive techniques, 2D and 3D viewing, clipping, segmentation, translation, rotation and projection. Involves removal of hidden edges, shading and color. Knowledge of basic linear algebra is required.

To learn about the course project, click here.

Major Class Projects

Some Major Computer Science Projects I have worked on


Human Centered Computing

In this class students learned about human-computer interaction, and techniques of user-centered design. While the final project had no coding, students still learned prototyping techniques.

The entire class was presented 3 different technologies and we needed to incorporate two of these into our project. My team chose the topics 3D printing and VR. Our idea was to have a user enter virtual reality and be able to sculpt anything they want as if they were in an art studio.

We went through many iterations of prototyping and taking feedback from users. Our prototyping sessions were with paper and props. We had glasses and gloves laid out for the user after they put these on, they “entered” virtual reality and we displayed a menu to them with options and tools for them to pick up. While the user worked, we took notes and everything they did, from everything that was intuitive from things they struggled with. We then go verbal feedback from the user about their experience. Using their feedback we improved on our prototype for the next iteration.

Tools Picked Up

  • Brain Storming
  • Prototyping

Intro to Robotics

In my Intro to Robotics class, for the first part of the semester, we learned various techniques to program a Sparki robot to do various things, starting from following a line to having Sparki show where it is in relation to the world. At the end of the semester, students we grouped into teams to design and execute a final project using the techniques they were taught and expanding upon them.

My team worked on a project revolving around Computer Vision. We designed a game for two Sparki bots to play. The goal for the robots was to find colored blocks and push them to their goal zones.

After calibrating a web camera, we identified the colored blocks visible as blobs to the Sparki blocks. The Sparki bots used Dijkstra’s algorithm to move to one block, pick it up, move to the goal zone, put down the block, and move to the next block.

I am currently working on locating all the files for this class and project and putting them into a GitHub repo here.

Tools Picked Up

  • OpenCV

Software Development Methods and Tools

In this class we covered the tools and methods used for software development. The students were assigned groups to work together to make some sort of application.

My group made an application based on maintenance requests. The idea behind it was to allow students to submit a maintenance request, such as a flickering light bulb, to maintenance staff, and to let the maintenance staff access the requests and mark their status.

To learn about this course project, you can check out the GitHub repo here.

Tools Picked Up

  • HTML5
  • CSS
  • GitHub
  • MySql

Data Mining

In this class we learned basic data mining concepts and techniques for discovering interesting patterns hidden in large-scale data sets. We got in groups and discussed a data mining project to do.

My team decided to work with avocado data sets. The goal of our project was to discover the correlation between the weather affecting avocado farms in California and avocado prices across the United States.

I worked on the project with my team. To check out our final GitHub repo you can click here.

Computer Animations

In this class we learn about techniques and principles in computer animations. Our final project is to animate a photo-realistic room.

The room I have created is inspired by the SAIC Ballroom.

My GitHub repo mainly contains notes I took in the class. To check out my current GitHub repo you can click here. Please stay tuned for the final video showcasing my work.

Tools Picked Up

  • Maya

Computer Graphics

In this class we learn about design, analysis and implementation of computer graphic techniques. The final project is to make something that showcases what we have learned with an insight into the material.

I made a first person shooter style project to showcase my abilities. I used previous homework assignments to work on small aspects of the final project as they were often open-ended, to encourage students to think about what to do for the final project.

To check out the final project, check out the "project" folder in my GitHub repo for the class here.

Tools Picked Up

  • OpenGL

Contact

Feel Free to Contact Me

Denver, CO, USA
Cell Phone: 720-301-1812
Email: struwe.madelaine@gmail.com