The good news is that we can use the same circuit from the Shift Register lecture:

We then create some code that lights up an LED one at a time, in order, to create a "sweep" illusion:
// Pins
const int data_pin = 2;
const int clock_pin = 3;
const int latch_pin = 4;
// Time to display each LED
int wait = 70; // milliseconds (ms)
void setup() {
pinMode(data_pin, OUTPUT);
pinMode(clock_pin, OUTPUT);
pinMode(latch_pin, OUTPUT);
}
void loop() {
// Sweep LEDs in one direction
byte x = B10000000;
for ( int i = 0; i < 8; i++ ) {
shiftDisplay(x);
x = x >> 1;
delay(wait);
}
// Sweep LEDs back the other direction
x = B00000001;
for ( int i = 0; i < 8; i++ ) {
shiftDisplay(x);
x = x << 1;
delay(wait);
}
}
void shiftDisplay(byte data) {
digitalWrite(latch_pin, LOW);
shiftOut(data_pin, clock_pin, LSBFIRST, data);
digitalWrite(latch_pin, HIGH);
}