School of Electrical Engineering and Computer Science (EECS)

College of Engineering & Mines

B.S. with Major in Computer Science

B.S. in Data Science

College of Arts and Sciences

B.A. with Major in Computer Science

CSCI Courses

CSCI 101. Introduction to Computers. 3 Credits.

An overview of the fundamental concepts and applications of computer science. Topics include data storage, hardware, operating systems, and programming principles. Corequisite: CSCI 101T is recommended. F,S,SS.

CSCI 110. Introduction to Computer Science. 3 Credits.

This is an introductory course for prospective computer science majors as well as offering an introduction to computing for non-computer science majors. Students will receive a broad introduction to the discipline of computer science without the immersion into a programming language. Students will learn to write interactive Web-based programs. No previous computing or programming experience is assumed. F,S,SS.

CSCI 120. Computer Programming I. 4 Credits.

An introduction to computer programming in a high-level language, with emphasis on problem solving and logical thinking. Students learn to design, implement, test, and debug programs for small-scale problems using elementary data types and control structures. Includes laboratory. On demand.

CSCI 130. Introduction to Scientific Programming. 4 Credits.

An introduction to scientific computing, with problem solving, algorithm development, and structured programming in a high-level language with an engineering and mathematical focus. Emphasis on learning how to design, code, debug, and document programs, using techniques of good programming style. Includes laboratory. F,S,SS.

CSCI 160. Computer Science I. 4 Credits.

An introduction to computer science, with problem solving, algorithm development, and structured programming in a high-level language. Emphasis on learning how to design, code, debug, and document programs, using techniques of good programming style. Includes laboratory. F,S,SS.

CSCI 160L. Computer Prog I Lab.

Computer Programming I Lab.

CSCI 161. Computer Science II. 4 Credits.

A broadening of foundations for computer science with advanced concepts in computer programming. Includes an introduction to data structures, analysis of algorithms, and the theory of computation. Includes laboratory. Prerequisites: CSCI 130 with a grade of C or better or CSCI 160 with a grade of C or better, and MATH 103 or MATH 107; concurrent enrollment in MATH 208 is recommended. S.

CSCI 161L. Computer Prog II Lab.

Computer Programming II Lab.

CSCI 170. Computer Programming II. 4 Credits.

Advanced techniques in computer programming using a high-level language. Topics include the use of recursion, pointers, and fundamental data structures in developing small to medium-scale programs. Includes laboratory. Prerequisite: CSCI 120. On demand.

CSCI 199. Topics in Computing. 1-3 Credits.

Selected introductory-level topics in computing for students of all majors. Course may be repeated to 6 credits with different topics. Repeatable to 6 credits. On demand.

CSCI 230. Systems Programming. 3 Credits.

Focus on low level programming. Topics covered include pointers, memory management, dynamic memory, code optimization, compiling and linking, and library development. Weekly programming assignments. Prerequisite: CSCI 161 with a grade of C or better. F,S.

CSCI 242. Algorithms and Data Structures. 3 Credits.

Object-oriented implementations of complex data structures including lists, sets, trees, and graphs. Time and space analysis and classification of algorithms using upper bounds (big Oh), lower bounds (big Omega), and exact bounds (big Theta). Techniques for analysis of recursive algorithms including use of the "Master Theorem" for divide-and-conquer recurrences. Prerequisites: CSCI 161 with a C or better and MATH 208. F,S.

CSCI 260. Advanced Programming Languages. 3 Credits.

Programming in a specific high-level language for students who are already proficient at programming in another high-level language. Course may be repeated for different languages. A student may not receive credit for both CSCI 260 and a 100-level programming course in the same language. Prerequisite: CSCI 161 or consent of instructor. Repeatable. F.

CSCI 270. Programming for Data Science. 3 Credits.

The Programming for Data Science course provides students with an introduction to the main tools and ideas in the data scientist's toolbox. The course gives an overview of the data, questions, techniques and tools that data analysts and data scientists work with. This course provides a conceptual introduction to the ideas behind turning data into actionable knowledge and tools that will be used to analyze this data. The course will cover collecting, cleaning and sharing data. Additionally, this course will cover how to communicate results through visualizations. Prerequisite: CSCI 161 with a grade of C or better. S.

CSCI 280. Object Oriented Programming. 3 Credits.

An introduction to the concept and execution of Object-Oriented programming, using the Java language. Includes an introduction to object creations, classes, inheritance, interfaces, exceptions, overloading, and more. Prerequisite: CSCI 161 with a C or better.

CSCI 289. Social Implications of Computer Technology. 3 Credits.

An introduction to the effects of computer technology on society and individuals and to ethical problems faced by computer professionals. Topics covered include privacy, the nature of work, centralization versus decentralization and the need for human factors analysis in the development of a new computer system. F.

CSCI 290. Cyber-Security and Information Assurance. 3 Credits.

An introduction covering the breadth of essential Cyber-Security and Information Assurance topics. Students will hone skills in observation, deduction, analysis, logical reasoning and critical thinking as they gain experience with non-technical and lightly technical aspects of Cyber-Security and Information Assurance through practical and real-world examples. S.

CSCI 297. Experiential Learning. 1-3 Credits.

A practical experience in which students offer their proficiency in computing as a resource or service for others. The experience may involve software development, software consulting and assistance, system administration, or instruction. Prerequisite: CSCI 161. Repeatable to 6 credits. S/U grading. F.

CSCI 299. Topics in Computer Science. 1-3 Credits.

Selected intermediate-level topics in computer science for students with some experience or previous courework in computing. Course may be repeated up to 6 credits with different topics. Repeatable to 6 credits. On demand.

CSCI 327. Data Communications. 3 Credits.

An introduction to the concepts of data transmission, communication hardware and protocols, communication software and the design, performance and management of computer networks. Prerequisites: CSCI 230 and MATH 208. F.

CSCI 363. User Interface Design. 3 Credits.

A study of the design and implementation of user interfaces for software applications. Students will apply principles of interface design to build applications using a toolkit of graphical interface components. Required coursework includes a team project. Prerequisite: CSCI 280 with a grade of C or better. F.

CSCI 364. Concurrent and Distributed Programming. 3 Credits.

This course focuses on concurrent object oriented programming and modern distributed/parallel programming models (such as OpenMP, CUDA, OpenCL and Actors). Students will utilize various high performance distributed computing technology. Topics covered will include shared and distributed memory systems, sockets, threads, and message passing. Prerequisites: CSCI 242 with a grade of C or better and CSCI 230 with a grade of C or better. S.

CSCI 365. Organization of Programming Languages. 3 Credits.

Compile and run time requirements of programming languages, parameter passing and value binding techniques. Vector and stack processing. Prerequisite: CSCI 242 with a grade of C or better. S.

CSCI 370. Computer Architecture. 4 Credits.

Computer structure, machine presentation of numbers and characters, instruction codes and assembly systems. Introduction to hardware methodologies and software extensions to hardware in computers. Some topics on hardware and software selection will be discussed. Prerequisites: CSCI 230 with a grade of C or better, EE 201, and EE 201L. S.

CSCI 384. Artificial Intelligence. 3 Credits.

A study of algorithms and application of AI. The topics include agent theory, problem-solving with the search, constraint satisfaction problem, game, knowledge-based system, reasoning and machine learning which are widely applicable to design of an intelligent system, data science and mining, information retrieval, pathfinding and classification, etc. Prerequisite: CSCI 242. SS, even years.

CSCI 387. Secure Software Engineering. 3 Credits.

This course provides fundamental knowledge of secure software development methodologies and applied security topics related to compiled programs. In-depth coverage of source code auditing, fuzzing, introduction to reverse engineering, and exploitation will be emphasized. F.

CSCI 388. Exploit Analysis and Development. 3 Credits.

Provides fundamental knowledge of Malware analysis. Topics include an introduction to both static and dynamic techniques for analyzing suspect binaries. Students will be exposed to advanced malware concepts including malware detection as well as the utilization of industry standard tools to analyze, debug, and reverse engineer suspect binaries. F.

CSCI 389. Computer and Network Security. 3 Credits.

This course introduces techniques for achieving security in multi-user standalone computer systems and distributed computer systems. Coverage includes host-based security topics (cryptography, instrusion detection, secure operating systems), network-based security topics (authentication and identification schemes, denial-of-service attacks, worms, firewalls), risk assessment and security policies. Prerequisite: CSCI 161. S.

CSCI 397. Cooperative Education. 1-2 Credits.

A practical work experience with an employer closely associated with the student's academic area. Arranged by mutual agreement among student, department, employer, and the UND Cooperative Education office. Repeatable to 6 credits. Prerequisites: Declared Computer Science major with 15 completed credits in CSCI including CSCI 230 and CSCI 242. Repeatable to 6 credits. S/U grading. F,S,SS.

CSCI 399. Topics in Computer Science. 1-3 Credits.

Selected topics in Computer Science which allow students to study specialized subjects. Repeatable to 12 credits. Prerequisite: Consent of instructor. Repeatable to 12 credits. On demand.

CSCI 427. Cloud Computing. 3 Credits.

This is the undergraduate-level course on cloud computing models, techniques, and architectures. Cloud computing is an important computing model which enables information, software, and other shared resources to be provisioned over the network as services in an on-demand manner. This course introduces the current practices in cloud computing. Topics may include distributed computing models and technologies, Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), Software-as-a-Service (SaaS), virtualization, performance and systems issues, capacity planning, disaster recovery, Cloud OS, federated clouds, challenges in implementing clouds, data centers, hypervisor CPU and memory management, and cloud hosted applications. S, even years.

CSCI 435. Formal Languages and Automata. 3 Credits.

A study of automata, grammars, and Turing machines as specifications for formal languages. Computation is defined in terms of deciding properties of formal languages, and the fundamental results of computability and decidability are derived. Prerequisites: CSCI 242 with a grade of C or better and minimum second semester junior standing. F.

CSCI 445. Mathematical Modeling and Simulation. 3 Credits.

A study of various mathematical applications for digital computers, including the modeling, simulation and interpretation of the solution of complex systems. Prerequisites: CSCI 161 or CSCI 170, and MATH 166 and a statisitcs course. F, even years.

CSCI 446. Computer Graphics I. 3 Credits.

Introduction to computer graphics. Topics include raster scan graphics, 2D and 3D representations, affine transformations, light and color, texture mapping, image processing, ray-tracing, and computer animation. Team-based weekly homework develops a 4 minute computer animation. Prerequisites: CSCI 242, CSCI 363, and MATH 166. F, odd years.

CSCI 448. Computer Graphics II. 3 Credits.

A continuation of CSCI 446, topics covered include: history of games, game taxonomies, game design theory, computer game development, physics engines and AI engines. Prerequisite: CSCI 446. S, even years.

CSCI 451. Operating Systems I. 3 Credits.

Introduction to operating system theory and fundamentals. Topics include: CPU scheduling, memory management, file systems, interprocess communication facilities, security. Weekly homework assignments focus on process synchronization using fork/exe, threads, mutexes, pipes, semaphores, and shared memory. Prerequisites: CSCI 242 and CSCI 370; both with a grade of C or better. F.

CSCI 452. Operating Systems II. 3 Credits.

A study of the implementation of operating systems and parts of operating systems, and development of system software. Prerequisites: CSCI 451. On demand.

CSCI 455. Database Management Systems. 3 Credits.

Database concepts, database design (ER, UML), database programming languages (SQL), NoSQL Database, Database Concurrency and recovery techniques, and Database security. Prerequisite: CSCI 242 with a grade of C or better. S, even years.

CSCI 457. Electronic Commerce Systems. 3 Credits.

A study of the system architecture, content design and implementation, and data analysis, management, and processing of electronic commerce. Topics include Internet basics, business issues, data management and processing, static and dynamic web programming, e-commerce content design and construction, and databases and host languages with embedded SQL. Prerequisite: CSCI 260 with course topic of Dot Net. S, odd years.

CSCI 463. Software Engineering. 3 Credits.

This course teaches software engineering principles and techniques used in the specification, design, implementation, verification and maintenance of large-scale software systems. Major software development methodologies are reviewed. As development team members, students participate in a group project involving the production or revision of a complex software product. Prerequisites: CSCI 242 and CSCI 363. S.

CSCI 465. Principles of Translation. 3 Credits.

Techniques for automatic translation of high-level languages to executable code. Prerequisites: CSCI 365 and CSCI 370. F, odd years.

CSCI 487. Penetration Testing. 3 Credits.

Provides theoretical and practical aspects of Network Penetration Testing. The course includes in-depth details and hands on labs for each of the five distinct phases of an ethical hack including reconnaissance, scanning and vulnerability assessment, gaining access and exploitation, maintaining access, and covering tracks. An applied approach with a focus on current tools and methodologies will be stressed. S.

CSCI 491. Seminars in Computer Science. 1 Credit.

A course for advanced students. Repeatable to 3 credits. Prerequisite: Consent of instructor. Repeatable to 3 credits. S/U grading. F,S.

CSCI 492. Senior Project I. 3 Credits.

The first course in a two-semester sequence in which computer science majors undertake a culminating research or software development project. The course requires written documents, oral presentations, and peer review for the initial phases of the project, including a project proposal, a review of previous work, and a complete software design or research plan. Prerequisites: CSCI 242 and at least second-semester junior standing. F.

CSCI 493. Senior Project II. 1 Credit.

The second course in a two-semester sequence in which computer science majors undertake a culminating research or software development project. The course requires written documents and oral presentations/demonstrations for both a preliminary and a final review of the completed project. Prerequisite: CSCI 492. S.

CSCI 494. Special Projects in Computer Science. 1-3 Credits.

A course for advanced students. 1-3 credits varying with the choice of project. May be repeated (6 credits maximum). Prerequisite: Consent of instructor. Repeatable to 6 credits. F,S.

EE Courses

EE 101. Introduction to Electrical Engineering. 1 Credit.

An introduction to the electrical engineering discipline. Recent technologies and practices in electronics, computers, controls, power systems, robotics, communication, and microwaves. F,S.

EE 201. Introduction to Digital Electronics. 2 Credits.

Introduction to the fundamentals of digital circuits design. Logic gates; Boolean algebra; Karnaugh maps; Mathematical operations; Flip Flops; Counters. Corequisite: EE 201L. F,S.

EE 201L. Digital Electronics Laboratory. 1 Credit.

Introduction to design and implementation of digital electronic circuits. Corequisite: EE 201. F,S.

EE 206. Circuit Analysis. 3 Credits.

Introduces the foundations of electrical engineering, applying these concepts in developing the fundamentals of energy conversion, electronics and circuit theory. Prerequisite: MATH 165 with a grade of C or better; EE Major should be declared. F.

EE 206L. Circuits Laboratory I. 1 Credit.

Introduction to methods of experimental circuit analysis and to proper uses of laboratory equipment. Prerequisite: EE major should be declared. Corequisite: EE 206. F,SS.

EE 304. Computer Aided Measurement and Controls. 3 Credits.

The principles of the use of a computer in a measurement and control environment are presented. Software is designed to drive interfaces to perform measurement and control algorithms. The software and concepts presented are evaluated in a laboratory environment. Prerequisites: Electrical Engineering major and MATH 165. F.

EE 313. Linear Electric Circuits. 3 Credits.

Linear electric circuits in the steady state and transient conditions; two-port circuits; Fourier Series single and polyphase systems. Prerequisites: Electrical Engineering major and EE 206 with a grade of C or better. Corequisite: EE 313L. S.

EE 313L. Circuits Laboratory II. 1 Credit.

Experimental circuit analysis and proper uses of laboratory equipment. Prerequisites: Electrical Engineering major and EE 206L. Corequisite: EE 313. S,SS.

EE 314. Signals and Systems. 3 Credits.

Passive filters; Laplace transform applications; Fourier transform; Z-transform; Nyquist sampling theorem; other topics as time permits (state variables; introduction to control and communications theory; discrete Fourier transform). Prerequisite: EE 313. Corequisite: MATH 266 and EE 314L. F.

EE 314L. Signal and Systems Laboratory. 1 Credit.

In this laboratory course, students will conduct simulations and experiments related to theory covered in EE 314. The topics include implementation of passive filters, Laplace transform, and z-transform. Corequisite: EE 314. F.

EE 316. Electric and Magnetic Fields. 3 Credits.

Field produced by simple distributions of electric charges and magnetic poles, field mapping and application to engineering problems. Prerequisites: EE 206 with a grade of C or better. Corequisite: MATH 266. F.

EE 318. Engineering Data Analysis. 3 Credits.

This course will provide undergraduate electrical engineering students with an understanding of the principles of engineering data analysis using basic probability theory and basic statistics theory. Students will have the opportunity to apply these concepts to actual engineering applications and case studies. Prerequisites: EE 206 with a grade of C or better. Corequisite: EE 313. F.

EE 321. Electronics I. 3 Credits.

Fundamentals of semiconductors, nonlinear discrete components such as diodes and transistors, and integrated circuits; analysis and synthesis of simple electronic circuits, including amplifiers. Prerequisite: EE 313. Corequisite: EE 321L. F.

EE 321L. Electronics Laboratory I. 1 Credit.

Practical electronics application and design using theory studied in concurrent third year electrical engineering courses. Prerequisite: EE 313L. Corequisite: EE 321. F.

EE 397. Cooperative Education. 1-2 Credits.

A practical work experience with an employer closely associated with the student's academic area. Arranged by mutual agreement among student, department, and employer. Repeatable to 24 credits. Prerequisite: Admission to the electrical engineering degree program; a cumulative GPA of 2.0 or higher is required. Repeatable to 24 credits. S/U grading. F,S,SS.

EE 401. Electric Drives. 3 Credits.

A study of variable speed drives and their electronic controls; analysis and synthesis of power electronics through computer simulations and laboratory implementations. Prerequisite: EE 314. Corequisite: EE 401L. S.

EE 401L. Electric Drives Laboratory. 1 Credit.

The course provides the basic knowledge required for the usage and the design of the most common electrical drives. This lab focuses on the Electric Drives and their control in a real time environment using dSPACE and/or similar digital signal processing based methods and simulations. Corequisite: EE 401. S.

EE 405. Control Systems I. 3 Credits.

Mathematical modeling and dynamic response of linear control systems; stability analysis; design of linear controllers using the root locus and frequency response techniques. Prerequisite: EE 314 and MATH 266. Corequisite: EE 405L. S.

EE 405L. Control Systems Laboratory. 1 Credit.

Experiments and simulations related to theory discussed in EE 405 are implemented in this laboratory course. The topics included mathematical modeling and dynamic response of linear systems; stability analysis; and design of controllers. Corequisite: EE 405. S.

EE 409. Distributed Networks. 3 Credits.

Fundamentals of transmission lines. Prerequisite: EE 313 and EE 316. S.

EE 411. Communications Engineering. 3 Credits.

Mathematical definition of random and deterministic signals and a study of various modulation systems. Prerequisite: EE 314. On demand.

EE 421. Electronics II. 3 Credits.

Analysis of electronic circuits and systems using discrete components and integrated circuits, digital circuits, active filters, and power amplifiers. Prerequisite: EE 314 and EE 321. Corequisite: EE 421L. S.

EE 421L. Electronics Lab II. 1 Credit.

Practical electronics application and design using theory studied in concurrent third year electrical engineering courses. Prerequisite: EE 321L. Corequisite: EE 421. S.

EE 423. Power Systems I. 3 Credits.

Electric power systems operation, control and economic analysis. Prerequisite: EE 313. On demand.

EE 424. Electronic Circuits. 3 Credits.

Principles, applications, and design of electronic equipment studied from viewpoint of complete systems. Prerequisite: EE 321. On demand.

EE 428. Robotics Fundamentals. 3 Credits.

Fundamentals of robotic systems: modeling, analysis, design, planning, and control. The project provides hands-on experience with robotic systems. Prerequisite: MATH 266 or consent of instructor. On demand.

EE 430. Introduction to Antenna Engineering. 3 Credits.

Review of vector analysis and Maxwell's equations, wave propagation in unbounded regions, reflection and refraction of waves, fundamental antenna concepts, wire-and aperture-type antennas, wave and antenna polarization, antenna measurements, and computer-aided analysis. Prerequisite: EE 409 or consent of instructor. On demand.

EE 434. Microwave Engineering. 3 Credits.

Review of transmission lines and plane waves, analysis of microwave networks and components using scattering matrices, analysis of periodic structures, transmission and cavity type filters, high frequency effects, microwave oscillators, amplifiers, and microwave measurement techniques. Prerequisite: EE 409 or consent of instructor. On demand.

EE 451. Computer Hardware Organization. 3 Credits.

The study of complete computer systems including digital hardware interconnection and organization and various operation and control methods necessary for realizing digital computers and analog systems. Prerequisite: EE 201 and EE 304; or consent of instructor. On demand.

EE 452. Embedded Systems. 3 Credits.

A study of microcontroller hardware and software, with an emphasis on interfacing the microcontroller with external electronic devices such as transceivers, sensors, and actuators for communications and control within an embedded system. Prerequisite: EE 201, EE 304 and EE 321. Corequisite: EE 452L. S.

EE 452L. Embedded Systems Design Laboratory. 1 Credit.

This introductory laboratory course provides students with the hands-on activities in order to learn and gain more experiences in designing embedded systems (smart systems) using microcontrollers, actuators, and sensors. Prerequisites: EE 201 and EE 304 or consent of instructor. Prerequisite or corequisite: EE 452. S.

EE 456. Digital Image Processing. 3 Credits.

Digital image retrieval, modification, enhancement, restoration, and storage. Image transformation and computer vision. The associated laboratory provides hands-on experiences. Prerequisite: EE 304 and EE 314. On demand.

EE 480. Senior Design I. 3 Credits.

First course in the two-semester capstone design experience for the electrical engineering undergraduate degree, emphasizing design methodologies, advanced communication, and teamwork. Student teams will select an electronic system to design, capture end-user requirements, and perform component trade studies, resulting in an oral and written critical design review at the end of the semester. EE 480 Senior Design I meets the Essential Studies Special Emphasis requirements for Advanced Communication (A) and Senior Capstone (C). Prerequisites: EE 309 and EE 421 and two out of the four following classes: EE 401, EE 405, EE 409, EE 452. F.

EE 481. Senior Design II. 3 Credits.

Second course in the two-semester capstone design experience for the electrical engineering undergraduate degree, emphasizing design methodologies, oral communication, and teamwork. Student teams will be required to build and test a prototype of the electronic systems designed in EE 480 Senior Design I, and they will prepare written reports and deliver oral presentations on their design choices with critique by the instructor. EE 481 Senior Design II meets the Essential Studies Special Emphasis requirement for Oral Communication (O). Prerequisite: EE 480. S.

EE 489. Senior Honors Thesis. 1-8 Credits.

Supervised independent study culminating in a thesis. Repeatable to 9 credits. Repeatable to 9 credits. F,S,SS.

EE 490. Electrical Engineering Problems. 1-9 Credits.

Repeatable to maximum of 9 credits. Prerequisite: Approval by departmental faculty member under whom the electrical engineering problem is studied. Repeatable to 9 credits. F,S.

Office of the Registrar

Tel: 701.777.2711
1.800.CALL.UND
Fax: 701.777.2696

Twamley Hall Room 201
264 Centennial Drive Stop 8382
Grand Forks, ND 58202-8382