Quinn Roemer's Projects
This course is an introduction to computer architecture using assembly language programs. Topics include binary representation of data and instructions, memory addressing modes, subroutines and macros, operating system interrupts, processor architecture, and interfacing with high level languages.
My first discord bot!
Website repository for accessing church library database.
Architecture and implementation of computer game systems. Topics include game engine architecture; screen management and rendering control; geometric models; algorithms and data structures for spatial partitioning, occlusion, and collision detection; real-time interactive 3D graphics and animation techniques; behavioral control for autonomous characters; simulation of physical phenomena; sound and music in games; optimization techniques; multi-player games and networking; game development tools and environments. Substantial programming and project work.
Overview, structure, models, concepts, principles and protocols of computer networking. Network architecture, ISO/OSI reference model, TCP/IP protocol stack, layering. Protocol, encapsulation, socket. HTTP, FTP, SMTP, DNS, P2P, TCP, UDP. Multiplexing and demultiplexing, reliable data transfer, flow control, congestion control. Internet addressing, routing, forwarding, IP, ICMP. Error detection and correction, multiple access problem, LAN vs WAN, Ethernet, ARP, switching. Wireless standards. Network security, threats and attacks, defense and countermeasures.
Introduction to computer organization and architecture. Combinational devices, sequential and synchronized circuits, memory organization, CPU architecture and organization, bus structures, input/output, interrupts, DMA, memory hierarchy, introduction to instruction level parallelism, multithreading, and multiprocessing.
Principles of Software Engineering covering the software development life cycle, including software requirements engineering (elicitation, modeling, analysis and specification), software design, software implementation and testing. Main topics include various software development process models, method and techniques for specifying requirements, architectural and detailed design specification, prototyping, top-down and bottom-up software implementation and testing. Topics also include project management, project documentation and the development of communication skills through written documentation and oral presentation.
Introduction to limits of computation and techniques for specifying and processing formal languages. applications. Regular languages, regular expressions, finite automata, properties and limitations. Context-free languages, grammars, pushdown automata, properties and limitations. Applications in lexical and syntax analyses, including recursive-descent or table-driven parsing. Turing machines, halting problem, reductions. Introduction to functional programming and related programming language features.
The grading scripts I used to grade CSC139 for Sacramento State University
Final project for CSC165
The game we created to train our AI on in CSC180 at Sacramento State University.
This is a course in data structures for computer science. Topics include time complexity analysis and big-O notation, searching and sorting, linked lists, stacks, queues, priority queues, lists, binary trees, B-trees, AVL trees, splay trees, graphs, and hash tables. Analysis of algorithms including mergesort, quicksort, heapsort. Graph theory, including shortest paths, topological sort, depth-first search, minimum spanning tree. If time permits, any of the following topics: tries, Huffman codes, branch and bound, Fibonacci heaps, critical path analysis, Open Shortest Path first (OSPF), and basic encryption algorithms.
Specification, implementation, and manipulation of abstract data types and their structures: balanced trees, priority queues, sets, hash tables, and graphs; recursion; searching and sorting algorithms; asymptotic analysis; NP completeness; fundamental graph algorithms including graph search, shortest path, and minimum spanning trees.
Entity-Relationship (ER) model; relational model; relational database design by ER-to-relational mapping; design of applications using database technology; SQL; schema definition, constraints, and queries; relational algebra; data normalization; access methods such as indexing and hash structures; introduction to transaction processing.
This course is an introduction to the essential discrete structures used in Computer Science, with emphasis on their applications. Topics to be covered include: binary number representation and arithmetic, sets, relations, functions, formal propositional logic and proofs, digital logic and combinational circuits, finite state machines, regular expressions and formal grammars. Students will implement programs to illustrate principles of discrete structures.
A Flask app that is capable of sending emails written in a WYSIWYG editor (Summernote).
Theory and implementation of a variety of techniques used to simulate intelligent behavior. Expert systems, fuzzy logic, neural networks, evolutionary computation, and two-player game-tree search will be covered in depth. Knowledge representation, pattern recognition, hybrid approaches, and handling uncertainty will also be discussed.
This is an introductory course in the fundamentals of designing digital computer hardware. This course covers: logic gates, binary number system, conversion between number systems, Boolean algebra, Karnaugh maps, combinational logic, digital logic design, flip-flops, programmable logic devices (PLDs), counters, registers, memories, state machines, designing combinational logic and state machines into PLDs, and basic computer architecture. The lab is design oriented and emphasizes the use of software equation entry tools, schematic entry, and logic simulation tools. Lab assignments are design oriented. This course is required for Electrical/Electronics Engineering and Computer Engineering majors at some universities. This course is also helpful for Computer Science majors, electronics technicians, and for students wishing to sample computer engineering.
Features of the C language commonly used in systems programming, application to systems programming in a UNIX environment. Topics include C preprocessor macros, I/O, bit-manipulation facilities, timesharing system concepts, file permissions, shell script programming, make files and source code control, basic system calls like fork and exec, pointers and dynamic memory allocation, libraries and relocation and linking concepts including assembler handling of symbol tables. Prior knowledge of a C like programming language is presumed.
Introduction to computer graphics and to advanced topics in object-oriented programming. Mobile application development; implementation of event-driven systems; advanced object-oriented concepts such as inheritance and polymorphism; implementation of software design patterns; graphical user interface development; fundamentals of 2D graphics systems. Application of these topics to mobile programming.
This course is an introduction to object-oriented programming using the C++ programming language. This course is designed to enhance students' abilities to implement object-oriented programs and to further develop programing proficiency. Detailed topics include classes, storage class and scope, encapsulation, polymorphism, inheritance, function overloading and overriding, virtual functions, operator overloading, templates, exception handling, stream I/O, file processing, and the Standard Template Library. Also covered are introductions to Graphical User Interface (GUI) development using class libraries, and object oriented design methodology.
Application of operating system principles to the design and implementation of a multitasking operating system. Students will write an operating system for a computer platform. Topics include: scheduling of processes, control and allocation of computer resources, and user interfacing.
Concepts, principles, fundamental issues, organization and structure of contemporary operating systems. Topics include processes, threads, concurrency, parallelism on multi-processor and multi-core systems, CPU scheduling, inter- process communication and synchronization, deadlocks, real and virtual memory management, device management, file systems, security, and protection. Lecture three hours.
Rankie is a discord bot integrated with Raider.io for World of Warcraft. It allows roles to be created around mythic+ scores, and assign them to users upon request.
Python script that monitors and reports on the status of a Linux server.
A simple note-taking app written in Flutter/Dart that emulates a certain Google app...
sOS (Save Our System) is a custom built 32bit multitasking operating system. The MSDOS like OS is written in C and a little Assembly. It currently supports process scheduling with time quantum's, system calls, interprocess communication through mailboxes with message queues, and process synchronization through semaphores.
Python implementation of Tic Tac Toe
This repository contains the game created for CSC133 in the Spring semester of 2020.
This repository contains my GitHub profile README