Courses Taken @ USC

  EE 599

Wireless Networks

The course is taught by Prof. Bhaskar Krishnamachari.

  • Currently Auditing  
  CS 567

Machine Learning

A graduate course focusing on statistical methods in pattern classification and machine learning. Topics include various parametric and nonparametric methods for supervised and unsupervised learning problems. Particular focuses on the theoretical understanding of these methods, as well as their computational implications. The class is taught by Prof. Fei Sha.

  • Currently Undertaking  
  CS 561

Foundations of Artificial Intelligence

A graduate level course on artificial intelligence. The course teaches artificial intelligence from an intelligent systems perspective. It emphasizes on exploring methods to build systems that can interact intelligently with their environment. Important topics covered include Search & Planning, Game Playing, Knowledge Representation & Reasoning, Statistical Machine Learning Methods, and Probabilistic Reasoning.

  CS 546

Intelligent Embedded Systems

A research-oriented programming-intensive graduate course on software development for intelligent embedded systems. The emphasis of this course is on exploring recent research literature in body-area sensor networks and intelligent mobile applications. Important topics include Context-aware Mobile Sensing System, Personal Health Monitoring System, Participatory Sensing / Urban Sensing Mobile Networks, Location-based Service Systems, and Mobile Social Networking Applications. The embedded devices being used are next-generation smart phones (based on Android), and various kinds of body-area networked sensors. The class is taught by Prof. Gaurav S. Sukhatme.

  EE 532

Wireless Internet and Pervasive Computing

A research-oriented graduate course in the field of wireless networking and mobile technology. Important topics covered include handheld computing device (iPhone), Mobile IPv6 standard, WAP, 3G / 4G cellular radio technology, wireless LAN (IEEE 802.11) protocol, WiMAX, mesh networking, wireless Ad Hoc (Manet) network, Bluetooth, PAN (IEEE 802.15.4) / Zigbee protocols, wireless sensor network, and wireless PKI infrasctructure. The class is taught by Prof. Kai Hwang.

  EE 579

Wireless and Mobile Networks Design and Laboratory

A graduate level programming-intensive course focusing on wireless network protocols and mobile applications design. Key topics covered includes various kinds of wireless network protocols (Cellular networks, Bluetooth, 802.11*, GPS / Assisted GPS), mobile application infrastructure (J2ME MIDP), and recent research literature in mobile computing, such as location-based service, and etc. The devices used in the class are Nokia N95 smart phones based on Symbian S60 platform. The class is taught by Prof. Murali Annavaram and Prof. Bhaskar Krishnamachari.

  • Developed a Bluetooth based Instant Messenger with Image/Audio/Video sharing services. 
  • Designed and implemented a “seamless” Audio/Video Multimedia player. 
  • Created a customized SVG-based animation screensaver. 
  • Realized a Location-based serviced GeoTagging Photo Album based on built-in GPS module. Set up a web service to upload/download photos to/from the backend database. 
  • Initiated a research project. For more information, please refer to Mobile Labor Market: A General Platform for Mobile Community.  
  EE 450

Introduction to Computer Networks

An introductory course on computer networks. Important topics include the structure and components of computer networks, layered architectures modeling, physical layer modulation, coding, and synchronization, medium-access control (CSMA-CD, and CSMA-CA), TCP/IP protocol suite, unicast and multicast routing protocols, networking devices, flow and congestion control, QoS, network security, and performance issues. The class is taught by Prof. Ali Zahid.

  • Network Simulation & Protocol Analysis using OPNET and Ethereal (Wireshark).
  • UNIX Socket Programming: Implemented fragmented messages transfer over TCP and UDP sockets based on Client-Server Paradigm. 
  CS 402

Operating Systems

A programming-intensive and introductory course on operating system and distributed computing. The course first focuses on issues in buiding an operating system for a simulated MIPS-style workstation, which include concurrency, deadlock control, multi-thread synchronization, scheduling of user-level processes/threads, virtual memory management, and file system. Moreover, the course also covers important topics in distributed computing, such as message passing paradigm, distributed object paradigm, remote procedure call model, and time synchronization issues in distributed systems. All the course projects are based on UC Berkeley's Nachos operating system simulator. The class is taught by Prof. Michael Crowley.

  • Developed a simplified OS which supports system calls, multi-threading, multi-programming, virtual memory & remote procedure call (RPC). 
  • Implemented a distributed system based on a hybrid of Client-Server paradigm and Peer-to-Peer paradigm to emulate a distributed grocery store. 
  EE 457

Computer Systems Organization

A senior level course on computer architecture. The course mainly focuses on the design and implementation of a static pipelined MIPS processor, as well as cache hierarchies, memory systems, and input/output architectures. In addition, data-path design for computer arithmetic units are covered, such as ALU, fast adders, pipelined multiplier, and fast dividers. The class is taught by Prof. Gandhi Puvvada.

  • Designed and Implemented a 5-Stage static pipelined MIPS processor. 
  EE 557

Computer Systems Architecture

A graduate level course on computer architecture. Key topics include: instruction sets design; in-order and out-of-order superscalar architectures, statically and dynamically scheduled pipelines, VLIW machines, EPIC architectures, Vector processors, cache and virtual memory organizations, processor micro-architecture, multithreaded architectures, symmetric multiprocessors (SMP), NUMA, Chip Multiprocessors (CMP), memory coherence models and protocols, and modern multicore processor architecture. The class is taught by Prof. Michel Dubois.

  • Simulated & tuned the performance of superscalar processor with dynamic scheduling, branch prediction, and speculative execution using SimpleScalar tool set.  
  • Designed the L2 cache for the dual-core chip with hyper-threading with optimized “ Power x Delay x Area ” product based on CACTI 4.2 model.  
  EE 560

Digital System Design - Tools and Techniques

An advanced digital system design course for graduate students. Key topics include gated clock, clock domain synchronization, asynchronous FIFO design, SDRAM controller, non-linear/wave pipelining, microcontroller based I/O interface design, UART, SPI/PCI Bus, MIPS processor, timing analysis, and etc. The class is taught by Prof. Gandhi Puvvada.

  • Pipelined MIPS processor / Tomasulo processor in VHDL. 
  • Board I/O design based on HyperTerminal using Xilinx PicoBlaze microcontroller. 
  • FLASH, SRAM, DRAM, DDR/DDR2 SDRAM controller Design and Simulation. 
  • Synchronous and Asynchronous FIFO Implementations. 
  CS 503

Parallel Programming

A research-oriented graduate level course in high-performance & parallel computing. The course is a comprehensive exploration of different parallel programming paradigms, examining challenges introduced by the growing diversity of multicore architectures, surveying the set of contemporary research ideas in parallel computing area, and providing context with parallel algorithms. The class is taught by Prof. Mary Hall.

  • Vectorized sequential SIMD programs using Intel SSE3 compiler. 
  • Parallelized Matrix LU Decomposition Algorithm using OpenMP. 
  • Developed a parallel Sparse Matrix-Vector Multiply in Cray Chapel. 
  CS 571

Web Technologies

Advanced study of programming languages with application to the Web design. Languages for client-side and server-side processing. Examples taken from: HTML, CSS, XML, Ajax, JavaScript, Java Servlets, PHP, Perl, and others.

  • Designed & Implemented an E-Commerce Website using Javascript, Ajax, SQL, and PHP. 
  CS 570

Analysis of Algorithms

a first graduate course in the design and analysis of algorithms. The course not only focuses on known and well-established results in the literature, but also touches on uncharted territory, or directions for research. Key topics include: Dynamic Programming, Max-Flow/Min-Cut and its applications, NP-hardness, Linear Programming, Approximation Algorithms, Randomized Algorithms, and Online Algorithms. The class is taught by Prof. David Kempe.

The University of Southern California does not screen or control the content on this website and thus does not guarantee the accuracy, integrity, or quality of such content. All content on this website is provided by and is the sole responsibility of the person from which such content originated, and such content does not necessarily reflect the opinions of the University administration or the Board of Trustees